The parallel collector will throw an OutOfMemoryError if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered, an OutOfMemoryError will be thrown. This feature is designed to prevent applications from running for an extended period of time while making little or no progress because the heap is too small. If necessary, this feature can be disabled by adding the option [color=blue]-XX:-UseGCOverheadLimit [/color]to the command line.
[url=http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.oom]Excessive GC Time and OutOfMemoryError[/url]
[table]
|-XX:-UseConcMarkSweepGC | 并发(ConcMarkSweepGC)| 指多个线程并发执行GC,一般适用于多处理器系统中,可以提高GC的效率,但算法复杂,系统消耗较大|
|-XX:-UseParallelGC | 并行(ParallelGC)|指GC运行时,对应用程序运行没有影响,GC和app两者的线程在并发执行,这样可以最大限度不影响app的运行|
|-XX:-UseSerialGC | 串行(SerialGC) |jvm的默认GC方式,一般适用于小型应用和单处理器,算法比较简单,GC效率也较高,但可能会给应用带来停顿|
[/table]
[url=http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.oom]Excessive GC Time and OutOfMemoryError[/url]
[table]
|-XX:-UseConcMarkSweepGC | 并发(ConcMarkSweepGC)| 指多个线程并发执行GC,一般适用于多处理器系统中,可以提高GC的效率,但算法复杂,系统消耗较大|
|-XX:-UseParallelGC | 并行(ParallelGC)|指GC运行时,对应用程序运行没有影响,GC和app两者的线程在并发执行,这样可以最大限度不影响app的运行|
|-XX:-UseSerialGC | 串行(SerialGC) |jvm的默认GC方式,一般适用于小型应用和单处理器,算法比较简单,GC效率也较高,但可能会给应用带来停顿|
[/table]
本文介绍Java中并行垃圾收集器的工作原理及其在内存回收过程中触发OutOfMemoryError的机制。当垃圾回收时间占比过高时,系统将抛出异常以避免长时间运行而无明显进展的情况。此外,还对比了并发、并行及串行垃圾收集器的特点。
14万+

被折叠的 条评论
为什么被折叠?



