JVM内存监控与调优(转载)
什么是分代垃圾回收策略?
根据对象的生命周期的长短把对象分成不同的种类(年轻代,年老代和持久代)并分别进行内存回收,就是分代垃圾回收!值得注意的是,这种划分对象的手段并不是自动进行的,而是伴随着回收过滤进行的,也就是说年轻代与年老代之间的转换是伴随着对象回收的,只有经过了回收的洗礼后一些对象才会被选中成为年老代,而另外一些不幸的对象则早早地就被系统取走了小命。
为什么要运用分代垃圾回收策略?在 java程序运行的过程中,会产生大量的对象,因每个对象所能承担的职责不同所具有的功能不同所以也有着不一样的生命周期,有的对象生命周期较长,比如 Http请求中的Session对象,线程,Socket连接等;有的对象生命周期较短,比如String对象,由于其不变类的特性,有的在使用一次后即 可回收。试想,在不进行对象存活时间区分的情况下,每次垃圾回收都是对整个堆空间进行回收,那么消耗的时间相对会很长,而且对于存活时间较长的对象进行的 扫描工作等都是徒劳。因此就需要引入分治的思想,所谓分治的思想就是因地制宜,将对象进行代的划分,把不同生命周期的对象放在不同的代上使用不同的垃圾回 收方式。
如何划分?将对象按其生命周期的不同划分成:年轻代(Young Generation)、年老代(Old Generation)、持久代(Permanent Generation)。其中持久代主要存放的是类信息,所以与java对象的回收关系不大,与回收息息相关的是年轻代和年老代。
浙公网安备 33010602011771号