1. JVM 堆内存结构
    堆(Heap)
    JVM 的内存分为多个区域,其中 堆 是主要存放对象实例的地方。堆进一步分为两个主要部分:
    新生代(Young Generation):用于存放新创建的对象,通常分为三个区域:
    -----Eden 区:新对象首先在这里分配内存。
    -----From 区(Survivor 1):在 Minor GC 后,存活的对象会被移动到这里。
    -----To 区(Survivor 2):与 From 区交替使用。

    老年代(Old Generation):存放存活时间较长的对象,以及在新生代 GC 多次后仍然存活的对象。

     新生代和老年代:
     新生代用于短命对象的分配,快速回收。
     老年代用于长期存活的对象,回收频率较低。
    
  2. 垃圾回收(GC)
    GC 的定义:
    垃圾回收(Garbage Collection) 是 JVM 自动管理内存的机制,程序员不需要手动释放内存。

     GC 类型:
     Minor GC:
     	主要针对新生代进行的垃圾回收。
     	频繁触发,回收速度快。
     	将未被回收的对象从 Eden 和 From 区移动到 To 区,生存时间增加的对象会晋升到老年代。
    
     Full GC:
     	同时回收新生代和老年代的对象。
     	触发条件通常是老年代内存不足。
     	相对较慢,性能开销大。
    
  3. 非堆内存
    其他内存区域
    Code Cache:存储编译后的代码,提高执行效率。
    Compressed Class Space:用于存放类的元数据,优化内存使用。
    Metaspace:存放类的元数据,取代了旧版 JVM 中的永久代(PermGen),可以动态扩展。

  4. 总结
    堆内存结构:新生代用于短命对象,老年代用于长期存活的对象。
    垃圾回收:自动管理内存,Minor GC 频繁且轻量,Full GC 稍慢且消耗资源。
    非堆内存:用于存放编译代码和类元数据。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部