Selecting a Collector
Unless your application has rather
strict pause time requirements, first run your application and allow the
VM to select a collector. If necessary, adjust the heap size to improve
performance. If the performance still does not meet your goals, then
use the following guidelines as a starting point for selecting a
collector.
- If the application has a small data set (up to approximately 100MB), then
- select the serial collector with
-XX:+UseSerialGC
.
- If the application will be run on a single processor and there are no pause time requirements, then
- let the VM select the collector, or
- select the serial collector with
-XX:+UseSerialGC
.
- If
(a) peak application performance is the first priority and (b) there
are no pause time requirements or pauses of one second or longer are
acceptable, then
- let the VM select the collector, or
- select the parallel collector with
-XX:+UseParallelGC
and (optionally) enable parallel compaction with -XX:+UseParallelOldGC
.
- If
response time is more important than overall throughput and garbage
collection pauses must be kept shorter than approximately one second,
then
- select the concurrent collector with
-XX:+UseConcMarkSweepGC
. If only one or two processors are available, consider using incremental mode, described below.
These
guidelines provide only a starting point for selecting a collector
because performance is dependent on the size of the heap, the amount of
live data maintained by the application and the number and speed of
available processors. Pause times are particularly sensitive to these
factors, so the threshold of one second mentioned above is only
approximate: the parallel collector will experience pause times longer
than one second on many data size and hardware combinations; conversely,
the concurrent collector may not be able to keep pauses shorter than
one second on some combinations. |
If
the recommended collector does not achieve the desired performance,
first attempt to adjust the heap and generation sizes to meet the
desired goals. If still unsuccessful, then try a different collector:
use the concurrent collector to reduce pause times and use the parallel
collector to increase overall throughput on multiprocessor hardware.
Refrences:
Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
分享到:
相关推荐
了解并熟练掌握这些GC算法和JVM调优技巧,对于解决性能问题、优化Java应用的运行效率至关重要,同时也是面试中经常被问到的话题。通过实践和理解,开发者可以更好地理解和控制JVM的行为,从而编写出更高效、更稳定的...
Java基础学习JVM中GC的算法 Java虚拟机(JVM)中的垃圾回收(GC)机制是Java语言的一大特色,它能够自动地回收内存空间,避免了手动管理内存的麻烦。...选择合适的GC算法可以提高Java程序的执行效率和内存使用情况。
《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...
调优包括调整堆大小、设置新生代与老年代的比例、选择合适的GC策略等。此外,监控GC日志、使用工具(如VisualVM、JProfiler)分析GC行为也是调优过程中的重要步骤。 总结,JVM内核的深入理解和GC的精通对于Java...
调优主要涉及选择合适的垃圾收集器,调整堆大小和新生代比例,以及设置GC日志,通过监控GC行为来优化性能。 总结,理解并掌握JVM参数和GC机制是Java开发中的重要技能。通过合理配置JVM参数,我们可以有效控制内存...
JVM提供了多种GC算法,如串行GC、并行GC、并发Mark Sweep(CMS)和G1 GC等。 G1 GC是Oracle JVM从Java 6 Update 24引入的一种新一代垃圾收集器,它的设计目标是实现可预测的暂停时间模型,即在垃圾收集过程中,能...
"JVM&g1gc;带书签,完整版本"的学习资料提供了深入了解JVM内存管理和G1垃圾收集器的详细内容。通过对G1的理解和实践,开发者可以更好地优化Java应用的性能,降低垃圾收集对应用运行的影响,实现更高效的内存管理。这...
JVM体系结构与GC调优相关介绍,包含JVM体系结构、常用GC算法、内存管理、垃圾回收器、虚拟机调优、相关监控工具等
4. **垃圾收集机制**:GC是JVM自动管理内存的主要手段,涉及分代收集、标记-清除、复制、标记-整理等多种算法。书中会详细介绍各种算法的工作原理、优缺点,以及在不同场景下的选择。 5. **GC调优**:包括如何分析...
此外,监控GC日志,分析GC行为,以及使用适当的GC算法(如CMS、G1或ZGC)也是优化过程中的关键步骤。通过这些实践,开发者能够确保Java应用程序在运行时具有良好的内存管理和高效的资源利用率。
GC:Gabage Collection,指JVM堆内存区域的垃圾回收 Minor GC:年轻代垃圾回收,所有的Majar GC都会触发进程暂停,只是这...Major GC发生在Old Generation区域被占满时,Major GC与Minor GC算法不同,相对要慢很多。
### JVM_GC调优详解 #### 一、JVM体系结构概览 ...理解不同GC算法的特点和适用场景,可以帮助开发者选择最适合特定应用场景的垃圾回收策略。同时,掌握JVM内存模型和垃圾回收器的工作原理也是进行有效调优的基础。
Java虚拟机(JVM)的垃圾收集(Garbage Collection, GC)是Java程序运行时管理内存的关键机制。它自动地识别并释放不再使用的对象,从而避免了程序员手动管理内存可能导致的内存泄漏问题。理解JVM的GC对于优化Java...
5. **内存分配策略**:如使用CMS或G1等高级GC算法,降低STW影响。 此外,JVM调优还包括JVM参数的调整,如堆大小(-Xms, -Xmx)、初始堆大小(-Xmn)、Metaspace大小(-XX:MaxMetaspaceSize)等。理解JIT编译器的...
每种算法都有其优缺,选择合适的算法取决于具体的应用场景。 7. 确定对象是否是垃圾 确定对象是否是垃圾可以使用引用计数或根可达算法。引用计数是给堆内存中的每个对象记录一个引用数,引用数为 0 的对象就是垃圾...
在Java虚拟机(JVM)中,垃圾回收(Garbage Collection, GC...开发者需要根据应用的需求选择合适的垃圾回收策略,以优化内存管理和提升系统性能。理解这些基础的垃圾回收算法有助于我们更好地调试和调优Java应用程序。
理解JVM内存模型和GC机制是Java开发人员的必备技能,通过合理配置JVM参数和选择合适的垃圾收集器,可以有效地提升应用程序的性能和稳定性。在实际项目中,结合监控工具(如VisualVM、JConsole等)进行调优,是解决...
选择合适的垃圾收集策略和垃圾收集器对于提高Java应用的性能至关重要。开发者需要根据具体的业务需求和运行环境来权衡各种方案的优劣,从而找到最适合的解决方案。通过了解上述介绍的各种垃圾收集算法和收集器,可以...
了解JVM调优技巧,如设置合适的内存参数、选择合适的GC算法,可以帮助解决应用程序的性能问题。 接下来,我们讨论线程。Java支持多线程编程,这使得程序能够同时处理多个任务。线程同步和通信是Java并发编程的关键...