Java虚拟机中内存结构:
总结:
存放的内容 | 逻辑分区 | 是否线程共享 | |
栈(VM Stack) | 该方法的局部变量表(基本类型、对象引用)、操作数栈、动态链接、方法出口等信息 | 否 | |
堆(Heap) | 对象实例 | 新生代/老年代 | 是 |
方法区Method Area | 虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。(常量存放在方法区的常量池) | 永久代 | 是 |
程序计数器(Program Counter Register) | 当前线程所执行的字节码的行号指示器 | 否 |
一个Java程序对应一个JVM,一个方法(线程)对应一个Java栈。
常量池:方法区的一部分。
class文件中除了类的版本,字段,方法,接口,等描述信息外,还有一项是常量池。存放编译时期生成的各种字面量和符号引用。
特性:动态性。