JVM GC机制
来源:互联网 发布:免费开淘宝店铺 编辑:程序博客网 时间:2024/05/20 06:22
[Java性能剖析]Sun JVM内存管理和垃圾回收
内存管理和垃圾回收是JVM非常关键的点,对Java性能的剖析而言,了解内存管理和垃圾回收的基本策略非常重要。本篇对Sun JVM 6.0的内存管理和垃圾回收做大概的描述。
1.内存管理
在程序运行过程当中,会创建大量的对象,这些对象,大部分是短周期的对象,小部分是长周期的对象,对于短周期的对象,需要频繁地进行垃圾回收以保证无用对象尽早被释放掉,对于长周期对象,则不需要频率垃圾回收以确保无谓地垃圾扫描检测。为解决这种矛盾,Sun JVM的内存管理采用分代的策略。
1)年轻代(Young Gen):年轻代主要存放新创建的对象,内存大小相对会比较小,垃圾回收会比较频繁。年轻代分成1个Eden Space和2个Suvivor Space(命名为A和B)
当对象在堆创建时,将进入年轻代的Eden Space。
垃圾回收器进行垃圾回收时,扫描Eden Space和A Suvivor Space,如果对象仍然存活,则复制到B Suvivor Space,如果B Suvivor Space已经满,则复制 Old Gen
扫描A Suvivor Space时,如果对象已经经过了几次的扫描仍然存活,JVM认为其为一个Old对象,则将其移到Old Gen。
扫描完毕后,JVM将Eden Space和A Suvivor Space清空,然后交换A和B的角色(即下次垃圾回收时会扫描Eden Space和BSuvivor Space。
我们可以看到:Young Gen垃圾回收时,采用将存活对象复制到到空的Suvivor Space的方式来确保不存在内存碎片,采用空间换时间的方式来加速内存垃圾回收。
2)年老代(Tenured Gen):年老代主要存放JVM认为比较old的对象(经过几次的Young Gen的垃圾回收后仍然存在),内存大小相对会比较大,垃圾回收也相对没有那么频繁(譬如可能几个小时一次)。年老代主要采用压缩的方式来避免内存碎片(将存活对象移动到内存片的一边),当然,有些垃圾回收器(譬如CMS垃圾回收器)出于效率的原因,可能会不进行压缩。
3)持久代(Perm Gen):持久代主要存放类定义、字节码和常量等很少会变更的信息
- JVM GC机制
- JVM GC机制
- JVM GC机制
- JVM GC机制
- jvm gc机制
- JVM GC机制
- 浅谈Jvm GC机制
- jvm----GC回收机制
- JVM内存GC机制
- JVM内存 GC机制
- jvm Gc的机制
- JVM的GC机制<一>新生代GC
- JVM的GC机制<一>新生代GC
- JVM-垃圾回收机制(GC)
- JVM GC 垃圾回收机制
- Java GC机制和JVM
- JVM 垃圾回收机制(GC)
- JVM GC垃圾回收机制
- SQL查询每个分组的前N条记录
- 读博士,需要什么
- 最近在做的一些事情
- SqlConnection的Dispose()方法
- 计算机经典书籍
- JVM GC机制
- JVM 垃圾回收机制与GC性能调优
- link
- opencv 训练散记
- javascript实现页面加载,预读取完数据后再显示页面
- GetHOG
- x-b
- b-x
- JVM的垃圾回收机制详解和调优