JVM1.8堆内存

1、堆是JVM内存占用最大,管理最复杂的一个区域。其唯一的用途就是存放对象实例:几乎所有的对象实例及数组都在对上进行分配。( jvm栈一般分配的是8大基本类型和引用类型。但是编译器会做逃逸分析,如果一个局部对象不会被方法体以外的代码引用,那么分配内存空间的时候就直接栈上分配了,这样可以节约GC的性能。)1.7后,字符串常量池从永久代中剥离出来,存放在堆中。堆有自己进一步的内存分块划分,按照GC分代收集角度的划分请参见下图:

 

JVM1.8堆内存

2 堆空间内存分配(默认情况下)

  • 老年代 : 三分之二的堆空间
  • 年轻代 : 三分之一的堆空间
    • eden区: 8/10 的年轻代空间
    • survivor0 : 1/10 的年轻代空间
    • survivor1 : 1/10 的年轻代空间

JVM1.8堆内存