JVM内存区域概览

JVM区域总体分两类,heap区和非heap区

Heap区又分为:年轻代(Young Generation)和老年代(Old Generation)。

年轻代是所有新对象产生的地方。当年轻代内存空间被用完时,就会触发垃圾回收。这个垃圾回收叫做Minor GC。

年轻代被分为3个部分—Eden区和两个Survivor区。

老年代内存里包含了长期存活的对象和经过多次Minor GC后依然存活下来的对象,通常会在老年代内存被占满时进行垃圾回收。老年代的垃圾收集叫做Major GC,Major GC通常是跟full GC是等价的,收集整个GC堆。

  • Eden Space(伊甸园);
  • Survivor Space(2个幸存者区);
  • Old Gen(老年代);

非Heap区又分:

  • Code Cache(代码缓存区);
  • Perm Gen(永久代);JDK1.8之后被元空间替代;Perm Gen全称是Permanent Generation space,称之为永久代,其实指的就是这个方法区。
  • Jvm Stack(java虚拟机栈);
  • Local Method Statck(本地方法栈);

怎么排查内存溢出?jmap 查看jvm堆内存信息