Java内存是怎么分配的

  1. 对象优先在新生代eden区分配 (当eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC)
  2. 大对象直接进入老年代 (大对象:需要大量连续内存空间的Java对象,如长的字符串以及数组)
  3. 长期存活对象直接进入老年代(虚拟机设计了一个对象年龄计数器,每经过一次MInor GC 年龄+1,该阀值为15)
  4. 动态对象年龄判断  (如果survivor区相同年龄所有对象大小的总和大于survivor区空间的一半,年龄>=该年龄的对象在Minor GC时将直接进入到老年代)
  5. 空间分配担保  (当Minor GC时如果存活对象过多,无法放在survivor区,就会向老年代借用内存存放对象,以确保成功完成Minor GC)

猜你喜欢

转载自blog.csdn.net/weixin_39590058/article/details/87915736