更多课程 选择中心

Java培训
美国上市教育机构

400-111-8989

Java培训

Java基础教程之JVM 运行时内存

  • 发布:Java培训
  • 来源:Java教程
  • 时间:2020-03-20 18:39

Java任然是现在使用比较广泛和流行的编程语言,部分Java程序员会遇到一些小问题,今天小编汇总了几个知识点给大家分享一下!今天和大家分享JVM 运行时内存

Java 堆从 GC 的角度还可以细分为:新生代(Eden 区、From Survivor 区和 To Survivor 区)和老年代。

新生代

是用来存放新生的对象。一般占据堆的 1/3 空间。由于频繁创建对象,所以新生代会频繁触发MinorGC 进行垃圾回收。新生代又分为 Eden 区、ServivorFrom、ServivorTo 三个区。

Eden 区:Java 新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当 Eden 区内存不够的时候就会触发 MinorGC,对新生代区进行一次垃圾回收。

ServivorFrom:上一次 GC 的幸存者,作为这一次 GC 的被扫描者。

ServivorTo:保留了一次 MinorGC 过程中的幸存者。

老年代

主要存放应用程序中生命周期长的内存对象。老年代的对象比较稳定,所以 MajorGC 不会频繁执行。在进行 MajorGC 前一般都先进行了一次 MinorGC,使得有新生代的对象晋身入老年代,导致空间不够用时才触发。当无法找到足够大的连续空间分配给新创建的较大对象时也会提前触发一次 MajorGC 进行垃圾回收腾出空间。

MajorGC 采用标记清除算法:首先扫描一次所有老年代,标记出存活的对象,然后回收没有标记的对象。MajorGC 的耗时比较长,因为要扫描再回收。MajorGC 会产生内存碎片,为了减少内存损耗,我们一般需要进行合并或者标记出来方便下次直接分配。当老年代也满了装不下的时候,就会抛出 OOM(Out of Memory)异常。

希望我的分享对你有所帮助,如果你想提升自己的Java技能不放现在达内Java培训机构,现在填写下面的表单即可有机会获得达内Java培训班免费体验课程。

免责声明:内容来源于网络,若涉及侵权联系尽快删除!

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Java 14正式发布了!你还在用Java 8吗?
下一篇:Java基础教程之垃圾回收与算法
程序员知识:阿里巴巴开源项目分享

程序员知识:阿里巴巴开源项目分享

Java中ThreadLocalRandom的使用

Java中ThreadLocalRandom的使用

Java学习路线流程图

Java学习路线流程图

选择城市和中心
贵州省

福建省

  • 达内厦门软件园中心
广西省

海南省