JVM内存结构
2024年11月17日大约 2 分钟
概念
JVM他是一个程序。Java语言能够跨平台全靠它,因为代码是运行在jvm上的,而和操作系统做的交互就是通过jvm来进行交互的

首先把Java代码编译成 .class 的字节码文件(因为JVM只认这个),然后通过JVM进行运行指令。不管是什么编程语言,只要遵守一定的规范最终编译成的字节码文件JVM都可以运行,比如 kotlin。
大体结构
JVM在内存中的结构大致分为五个模块:堆区、栈区、方法区、本地方法栈、程序计数器

堆区:存放对象包括String、HashMap、LinkList···
栈区*:里面存放的是八种基本数据类型和堆区对象的引用(内存地址)
方法区:这里面存放就是常量池、类的信息(字段、方法);在Java中所运用到的反射所需要的class、method······等一些东西就是存放在方法区内的;这里面还有一个运行时常量池,它呢也是属于方法区的一部分,顾名思义就是存放一些常量内从
本地方法栈*:它呢不是本地的方法栈,而是本地方法的栈。他是给本地方法专门提供的一个栈空间。本地方法就是由其他语言编写的交给Java来运行的方法,通常采用 native 关键字描述,比如JDK自带的 Thread.sleep()
方法就是
程序计数器*:这个东西的作用就是记录当前需要执行的指令地址;现在假设有一个记事本,他的每一行都记录了要执行的命令,现在命令从上到下执行。如果执行到中间了,你离开了一会,而你又不记得你执行到什么时候了,这种情况就只能重新执行。而在有了程序计数器之后他会帮忙记录你的命令执行到了第几行
被 * 标记的都是线程私有的内容
jvm内存模型