美文网首页
3.8实战内存分配与回收策略(gold_axe)

3.8实战内存分配与回收策略(gold_axe)

作者: 胖达_4b7e | 来源:发表于2020-03-23 11:42 被阅读0次

Java自动内存管理:

  • 1.自动给对象分配内存
  • 2.自动垃圾回收

分配一般在堆的新生代,
也有可能太大了, 直接取老年代
也有可能经过即时编译后被拆散,为标量类型并间接地在栈上分配

Jvm规范未规定分配和回收的细节,
各垃圾收集器的实现不同
这节说的是 大体上 的原则

3.8.1 对象优先在Eden分配

来对象在 Eden区 中分配

如果不够放, 就Minor GC

Survivor空间不够放, 就分配担保机制 先放 老年代

G1 不用

3.8.2 大对象直接进入老年代

大对象导致内存明明还有不少空间时就提前触发垃圾收集,以得到连续空间
当复制对象时,就意味着高额的内存复制开销。

新生代收集器: Serial,ParNew 有提供参数设多大的对象 直接分配到 老年代

3.8.3 长期存活的对象将进入老年代

默认的15次存活, 可调

3.8.4 动态对象年龄判定

Survivor空间中 [相同年龄所有对象大小的总和]>Survivor/2
>=平均年龄的对象 可直接进入老年代, 不用等年龄到阈值

3.8.5 空间分配担保

Minor GC 可能会有风险,
就是, 虽然一般是不会,但是这次Minor GC回收发现存活的特别多,
不止是Survivor放不下, 连老年代都放不下, 担保都不行, 真的发生就只能Full GC了

所以, Minor GC 会先看,
老年代最大可用的连续空间> 历次晋升到老年代对象的平均大小
这个是不是成立,
不成立的话, 风险比较大了, 不如直接 Full GC 了

G1 没有

相关文章

  • 3.8实战内存分配与回收策略(gold_axe)

    Java自动内存管理: 1.自动给对象分配内存 2.自动垃圾回收 分配一般在堆的新生代,也有可能太大了, 直接取老...

  • JVM学习四(内存分配与回收策略)

    (一)内存分配与回收策略 给对象分配内存、回收分配给对象的内存1、对象优先在Eden分配 通过-XX:+Print...

  • Java虚拟机内存分配与回收策略

    Java虚拟机中的内存分配与回收策略就是 Java的自动内存管理,其最核心的部分就是堆内存中对象的分配与回收。所以...

  • 【019】2020.11.19 周四 Java内存分布与回收策略

    内存分布与回收策略 解决两个问题 自动给对象分配内存 基本上都是堆上分配 自动回收分配给对象的内存 对象优先在新生...

  • JVM实战:内存分配与回收策略

    在阅读《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) (华章原创精品) - 周志明》一书中,为增强理...

  • 内存分配与回收策略

    对象优先在Eden分配   大多数情况,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将...

  • 内存分配与回收策略

    1、对象优先在Eden分配 大多数情况下,对象在新生代的Eden区分配。当Eden区没有足够的空间进行分配时,虚拟...

  • 内存分配与回收策略

    对象优先在Eden分配 当eden没有足够空间进行分配时,虚拟机将发起一次Minor GC 大对象直接进入老年代 ...

  • 内存分配与回收策略

    对象优先在Eden分配 对象优先在Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次minor...

  • 内存分配与回收策略

    Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存...

网友评论

      本文标题:3.8实战内存分配与回收策略(gold_axe)

      本文链接:https://www.haomeiwen.com/subject/zpwiyhtx.html