Fork me on GitHub

java GC

内存分配

  • 根据GC日志获取老年代的活跃数据大小为300M,各个分区大小可以设为:

总堆:1200M = 300M x 4
新生代: 450M = 300M x 1.5
老年代: 750M = 1200M - 450M

什么样的对象需要被GC

  • 判断算法
  1. 引用计数法 (循环引用问题)
  2. 可达性分析( GC Roots)
    • 虚拟机栈中的本地变量表引用的对象
    • 方法区 类静态变量引用的对象、常量引用对象
    • 本地方法栈中JNI
  • 对象很大:
    -xx:PretenureSizeThreshold=3145728

新生代GC

  1. Minor GC
  2. 分配担保
  • Minor GC 之前检查: 老年代最大可用连续空间是否大于新生代所有对象总空间
posted @ 2019-08-07 11:17  一个BUG难搞啊  阅读(144)  评论(0编辑  收藏  举报