欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

充分的了解下JVM运行时内存管理与分配

程序员文章站 2022-04-15 18:29:21
JVM运行是内存Java堆从GC的角度可以细分为:新生代( Eden 区 、 From Survivor 区 和 To Survivor 区)和老年代新生代用来存放新生的对象,占据堆的1/3空间。由于频繁创建对象,会频繁触发MinorGC进行垃圾回收Eden 区java新生对象的出生地如果创建的对象占用的内存很大,直接分配到老年代当Eden区内存不够的时候就会触发MinorGC,对新生代进行一次垃圾回收ServivorFrom上一次GC的幸存者,作为这次GC的被扫描者Ser...

JVM运行时内存

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

新生代

  • 用来存放新生的对象,占据堆的1/3空间。
  • 由于频繁创建对象,会频繁触发MinorGC进行垃圾回收

Eden 区

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

ServivorFrom

  • 上一次GC的幸存者,作为这次GC的被扫描者

ServivorTo

  • 保留了一次MinorGC中的幸存者

MinorGC的过程(复制->清空->互换)

  • eden 、 servicorFrom 复制到 ServicorTo,对象年龄+1(若对象的年龄到达老年区的标准或者ServicorTo的内存不够位置,则直接赋值到来年代)
  • 清空 eden 、 servicorFrom
  • ServicorTo 和 ServicorFrom 互换

本文地址:https://blog.csdn.net/weixin_41747224/article/details/110228311