0
点赞
收藏
分享

微信扫一扫

堆内存分配

  • java堆分布图
  • 堆内存分配_自定义

  • 分配规则

对象主要分配在新⽣代的 Eden 区上
如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配
少数情况下也可能会直接分配在⽼年代中

  • 测试代码
  • 堆内存分配_垃圾回收_02

  • 配置打印垃圾回收
  • 堆内存分配_JVM_03

  • 控制台打印
  • 堆内存分配_垃圾回收_04

  • 自定义垃圾收集器
  • 堆内存分配_java_05

  • 控制台打印
  • 堆内存分配_垃圾回收_06

  • GC参数指定垃圾回收

-Xms20 M、-Xmx20 M、-Xmn10 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 倍以上



举报

相关推荐

0 条评论