跳至主要內容

JVM堆内存分配

xw大约 1 分钟JVMJVM

  • Java堆内存区域的划分以及作用讲解

  • 对象分配的规则有哪些

    • 对象主要分配在新生代的 Eden 区上
    • 如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配
    • 少数情况下也可能会直接分配在老年代中
  • GC参数指定垃圾回收

    • -Xms20 M、-Xmx20 M、-Xmn1 0 M 这 3 个参数限制了 Java 堆大小为 20 MB,不可扩展,其中 10 MB 分配给新生代,剩下的 10 MB 分配给老年代。-Xx: SurvivorRatio= 8 决定了新生代中 Eden 区与两个 Survivor 区的空间比例是 8:1
  • 新生代与老年代

    • 新生代 GC (Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度老年代 GC (Major GC/ Full GC):指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Minor GC(但非绝对的,在 Parallel Scavenge 收集器的收集策略里就有直接进行 Major GC 的策略选择过程)。Major GC 的速度一般会比 Minor GC 慢 10 倍以上。
-Xmx 堆内存最大
-Xmn 年轻代内存大小
-Xms 初始堆内存大小