JVM运行时数据区域学习

时间:2022-12-27 00:10:33

JVM运行时数据区域学习

注:
    1.本地方法栈和虚拟机栈并非所有的JVM都有区分,不是强制规定,HotSpot中本地方法栈和虚拟机栈是合在一起的;
    2.方法区不等于永久代,HotSpot使用永久代来实现方法区,但在其他的JVM中并不适用;
    3.一般来说,对象实例和数组都在堆上分配但是不是绝对的.随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配,标量替换优化技术将会导致一下微妙的变化.参考深入JVM虚拟机,参考hollischuang大神的文章:对象和数组并不都是在堆上分配内存的;
    4.堆内存 = 新生代(1/3) + 老年代(2/3);新生代 = Eden + from survivor + to survivor.
    5.永久代属于HotSpot,JDK1.8废弃了永久代,取而代之的是Metaspace(元空间),元空间使用的是直接内存,不使用虚拟机内存;
    6.在HotSpot中字符串常量池在jdk1.8由原来的方法区(永久代)转移到java堆中.