JVM GC机制
来源:互联网 发布:安全文明施工费算法 编辑:程序博客网 时间:2024/05/09 03:08
当对象在堆创建时,将进入年轻代的Eden Space。
垃圾回收器进行垃圾回收时,扫描Eden Space和A Suvivor Space,如果对象仍然存活,则复制到B SuvivorSpace,如果B Suvivor Space已经满,则复制 Old Gen
扫描A Suvivor Space时,如果对象已经经过了几次的扫描仍然存活,JVM认为其为一个Old对象,则将其移到OldGen。
扫描完毕后,JVM将Eden Space和A Suvivor Space清空,然后交换A和B的角色(即下次垃圾回收时会扫描EdenSpace和BSuvivor Space。
-Xms初始Heap大小 -Xmxjava heap最大值 -Xmnyoung generation的heap大小
JVM有2个GC线程。第一个线程负责回收Heap的Young区。第二个线程在Heap不足时,遍历Heap,将Young区升级为Older区。Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能。为什么一些程序频繁发生GC?有如下原因:l-Xss每个线程的Stack大小
Stack的大小限制着线程的数量。如果Stack过大就好导致内存溢漏。-Xss参数决定Stack大小,例如-Xss1024K。如果Stack太小,也会导致Stack溢漏。3.硬件环境硬件环境也影响GC的效率,例如机器的种类,内存,swap空间,和CPU的数量。如果你的程序需要频繁创建很多transient对象,会导致JVM频繁GC。这种情况你可以增加机器的内存,来减少Swap空间的使用[2]。4.4种GC第一种为单线程GC,也是默认的GC。,该GC适用于单CPU机器。第二种为ThroughputGC,是多线程的GC,适用于多CPU,使用大量线程的程序。第二种GC与第一种GC相似,不同在于GC在收集Young区是多线程的,但在Old区和第一种一样,仍然采用单线程。-XX:+UseParallelGC参数启动该GC。第三种为ConcurrentLow PauseGC,类似于第一种,适用于多CPU,并要求缩短因GC造成程序停滞的时间。这种GC可以在Old区的回收同时,运行应用程序。-XX:+UseConcMarkSweepGC参数启动该GC。第四种为IncrementalLow PauseGC,适用于要求缩短因GC造成程序停滞的时间。这种GC可以在Young区回收的同时,回收一部分Old区对象。-Xincgc参数启动该GC。4种GC的具体描述参见[3]。- 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垃圾回收机制
- java多线程总结【转载】
- 多线程学习记录2--代码
- 多线程学习记录3
- JVM的优化
- jvm gc机制
- JVM GC机制
- Java中的值传递和引用传递【转】(…
- Java中堆、栈、常量池等概念解析【…
- Java里的按值传递与引用传递【转载…
- 如何删除数据库中的冗余数据…
- 如何删除数据库中的冗余数据…
- oracle 左边接 右连接 oracl…
- oracle 隐式游标和显式游标的区别
- ORACLE左右连接