优化 JVM 面试题:GC日志设置与ParallelScavenge收集器详解

需积分: 5 0 下载量 12 浏览量 更新于2024-08-03 收藏 9KB MD 举报
本文档汇总了最新的Java虚拟机(JVM)面试题及其答案,重点讨论了如何配置和查看GC (Garbage Collection,垃圾收集) 日志,这对于理解和调试JVM性能至关重要。以下是一些关键知识点: 1. **GC日志设置**: - 开启GC日志常用参数包括: - `-Xloggc:filename`:指定日志文件的路径,记录每次GC的信息。 - `-XX:+PrintGC`:打印基本的GC信息,如收集器名称和收集原因。 - `-XX:+PrintGCDetails`:提供详细的GC过程信息。 - `-XX:+PrintGCTimeStamps`:显示GC的时间戳。 - `-XX:+PrintHeapAtGC`:在GC前后打印堆和区域的容量变化。 - `-XX:+PrintTenuringDistribution`:展示老年代对象的存活年龄分布,帮助优化MaxTenuringThreshold参数。 - `-XX:+PrintAdaptiveSizePolicy`:展示垃圾收集器自动调整堆区域大小和目标的信息。 - `-XX:+PrintGCApplicationConcurrentTime`:记录GC期间用户线程并发执行时间。 - `-XX:+PrintGCApplicationStoppedTime`:记录用户线程由于GC停顿的时间。 - `-XX:HeapDumpOnOutOfMemoryError`:堆内存溢出时自动创建堆转储文件。 - `-XX:HeapDumpPath`:堆转储文件的保存路径。 2. **ParallelScavenge收集器**: - ParallelScavenge是新生代的一个垃圾收集器,采用多线程复制算法,旨在提供较高的吞吐量。 - 吞吐量是衡量性能的关键指标,它表示程序运行用户代码的时间占CPU总消耗时间的比例。 - 收集器的目标是控制程序在大部分时间里保持较高的CPU利用率,而不是追求最短的暂停时间。 - 它适合对响应时间和系统稳定性有较高要求的应用场景。 此外,文档还提到了Java 9对JVM日志模块的重构,以及如何通过工具(如在线工具GCeasy和离线版GCViewer,或者JDK自带的jstat)来分析和可视化GC数据。对于现场环境中无法实时监控的情况,这些工具可以提供有力的支持。 掌握这些知识点有助于面试者深入理解JVM的工作原理,优化应用性能,并解决实际开发中的性能瓶颈问题。