1
kang00001 2023-07-25 19:41:06 +08:00 1
图片挂了
|
2
Akitora 2023-07-25 20:03:09 +08:00 1
Java 虚拟机对于 Class 文件每一部分(自然也包括常量池)的格式都有严格规定,如每一个字节用于存储哪种数据都必须符合规范上的要求才会被虚拟机认可、加载和执行,但对于运行时常量池,《 Java 虚拟机规范》并没有做任何细节的要求,不同提供商实现的虚拟机可以按照自己的需要来实现这个内存区域,不过一般来说,除了保存 Class 文件中描述的符号引用外,还会把由符号引用翻译出来的直接引用也存储在运行时常量池中。
|
3
Akitora 2023-07-25 20:06:13 +08:00
|
4
Aresxue 2023-07-26 14:08:49 +08:00 1
永久代可以理解为 HotSpot 虚拟机对虚拟机规范中方法区的一种实现方式,在物理上两者是相等的
常量 方法区 静态变量 方法区 局部变量 栈 成员变量 堆 常量且字面量 常量池 常量且引用对象 堆 静态变量且引用对象 方法区 静态变量且字面量 常量池 局部变量且引用对象 堆 局部变量且基本类型字面量 栈 局部变量且"" 常量池 成员变量且引用对象 堆 成员变量且基本类型字面量 堆 成员变量且"" 常量池 1.7 符号引用(Symbols)转移到了 native heap ;字面量(interned strings)转移到了 java heap ;类的静态变量(class statics)转移到了 java heap ,运行时常量池也到了 java heap(1.8 又到了元空间) 1.8 里面只有元空间没有持久代了 |