Java开发-面试题-0040说明 JVM 的一些常用参数

Java开发-面试题-0040说明 JVM 的一些常用参数

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

(技术)微信公众号:CodeZeng1998

(生活)微信公众号:好锅

其他平台:CodeZeng1998好锅

注意:下列常用参数黑色加粗的是使用最频繁的几个参数之一。

JVM(Java Virtual Machine)的常用参数可以分为几类:内存相关参数、垃圾回收相关参数、性能优化参数、调试相关参数等。以下是一些常用的 JVM 参数说明:

1. 内存相关参数

这些参数用于配置 JVM 的堆内存、非堆内存、栈大小等。

  • -Xms:设置 JVM 初始化堆内存大小。

​ 示例:-Xms512m,表示 JVM 启动时分配 512 MB 的堆内存。

  • -Xmx:设置 JVM 最大堆内存大小。

​ 示例:-Xmx2g,表示 JVM 最大可以使用 2 GB 的堆内存。

  • -Xmn:设置新生代内存大小。

​ 示例:-Xmn256m,表示新生代的大小为 256 MB。

  • -XX:MetaspaceSize:设置元空间(Metaspace)的初始大小。

​ 示例:-XX:MetaspaceSize=128m,表示初始分配 128 MB 的元空间。

  • -XX:MaxMetaspaceSize:设置元空间的最大值。

​ 示例:-XX:MaxMetaspaceSize=512m,表示元空间最大可扩展到 512 MB。

  • -Xss:设置每个线程的栈大小。

​ 示例:-Xss1m,表示每个线程分配 1 MB 的栈内存。

2. 垃圾回收相关参数

这些参数用于调整 JVM 的垃圾回收策略和行为。

  • -XX:+UseG1GC:启用 G1 垃圾回收器,这是现代 JVM 默认的 GC 垃圾回收器,适合低延迟的应用。

  • -XX:+UseParallelGC:启用并行垃圾回收器,适合高吞吐量的场景。

  • -XX:+UseConcMarkSweepGC:启用 CMS(并发标记清除)垃圾回收器,适合低延迟的应用场景(已被 G1GC 逐步替代)。

  • -XX:MaxGCPauseMillis:设置最大 GC 暂停时间。

​ 示例:-XX:MaxGCPauseMillis=200,表示最大 GC 暂停时间为 200 毫秒。

  • -XX:GCTimeRatio:设置 GC 时间占应用时间的比率。

​ 示例:-XX:GCTimeRatio=19,表示 GC 时间占比为 1/(1+19) = 5%。

3. 性能优化参数

用于提高应用的性能,包括即时编译器(JIT)相关的参数。

  • -XX:+AggressiveOpts:启用一些 JVM 实验性的优化选项,这些选项可能在未来成为默认设置。

  • -XX:+TieredCompilation:启用分层编译,分层编译会结合解释器和编译器的优点,提升应用启动速度和长期性能。

  • -XX:CompileThreshold:设置方法编译的阈值,即方法被调用多少次后,JIT 开始编译该方法。

​ 示例:-XX:CompileThreshold=1000,表示方法调用 1000 次后进行编译。

4. 调试相关参数

这些参数有助于调试和分析 JVM 应用程序。

  • -XX:+PrintGC:输出垃圾回收的简要信息。

  • -XX:+PrintGCDetails:输出垃圾回收的详细信息,包括每次垃圾回收的时间、回收了多少内存等。

  • -XX:+PrintGCTimeStamps:输出垃圾回收的时间戳。

  • -XX:+HeapDumpOnOutOfMemoryError:在发生 OOM(OutOfMemoryError)时生成堆转储文件,方便后续分析。

​ 示例:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump,指定 OOM 时生成的堆转储文件路径。

  • -Xloggc:指定垃圾回收日志的输出路径。

​ 示例:-Xloggc:/path/to/gc.log,将 GC 日志输出到指定文件。

5. 类加载相关参数

  • -XX:+TraceClassLoading:用于跟踪类加载的过程,输出哪些类被加载以及类加载的时间。
  • -XX:+TraceClassUnloading:用于跟踪类卸载的过程。
  • -verbose:class:输出每次类加载时的详细信息,包括类的名称和加载器信息。

6. 其他常用参数

  • -server:让 JVM 以服务器模式运行,适用于需要较高性能和长时间运行的服务器应用。相对 -client 模式,-server 会有更好的优化。

  • -D:设置系统属性。

示例:-Dfile.encoding=UTF-8,表示设置文件的编码方式为 UTF-8。
这些 JVM 参数可以根据应用的实际需求进行调优。例如,对于需要大量内存的应用,可以增大堆内存的大小(-Xmx);对于对延迟敏感的应用,可以调整垃圾回收策略和暂停时间(如 -XX:MaxGCPauseMillis);对于调试内存泄漏问题,可以启用 -XX:+HeapDumpOnOutOfMemoryError 等参数。
在这里插入图片描述


以上就是本文相关的所有内容了,如果发现有误欢迎评论指正,更多内容欢迎各位关注。

上图是由 Pic 生成的

关键词:Cute seals


更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

(技术)微信公众号:CodeZeng1998

(生活)微信公众号:好锅

其他平台:CodeZeng1998好锅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值