java面试题|JVM调优常用JVM参数代码实例简介
JVM(Java Virtual Machine)启动参数用于配置Java应用程序的运行时环境,包括内存管理、垃圾回收(GC)算法、性能调优和日志记录等。
# JVM启动参数,不换行格式
# 设置堆内存最大值和初始值
-Xmx4g -Xms4g
# 指定垃圾回收算法为G1 GC,并设置最大GC停顿时间为50毫秒
-XX:+UseG1GC -XX:MaxGCPauseMillis=50
# 指定垃圾回收并行线程数
-XX:ParallelGCThreads=4
# 打印详细的垃圾回收日志,并包含日期时间戳
-XX:+PrintGCDetails -XX:+PrintGCDateStamps
# 指定垃圾回收日志文件路径
-Xloggc:gc.log
# 指定Meta区的最大值(用于存储类的元数据)
-XX:MaxMetaspaceSize=2g
# 设置单个线程栈的大小
-Xss1m
# 当堆内存溢出时,自动进行Dump,并指定Dump文件路径
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/
# 指定默认的连接超时时间和读取超时时间(单位为毫秒)
-Dsun.net.client.defaultConnectTimeout=2000
-Dsun.net.client.defaultReadTimeout=2000
# 指定时区,例如设置为东八区
-Duser.timezone=GMT+08
# 设置默认的文件编码为UTF-8
-Dfile.encoding=UTF-8
# 指定随机数熵源,使用非阻塞的伪随机数生成器
-Djava.security.egd=file:/dev/./urandom
参数解释
- -Xmx4g -Xms4g:-Xmx设置Java堆的最大值,-Xms设置Java堆的初始值。这里都设置为4GB。
- -XX:+UseG1GC -XX:MaxGCPauseMillis=50:启用G1垃圾收集器,并尝试将最大GC停顿时间控制在50毫秒以内。
- -XX:ParallelGCThreads=4:设置垃圾回收时使用的并行线程数。
- -XX:+PrintGCDetails -XX:+PrintGCDateStamps:打印详细的GC日志,并包含日期时间戳,有助于分析GC行为。
- -Xloggc:gc.log:指定GC日志的输出文件。
- -XX:MaxMetaspaceSize=2g:设置Metaspace(用于存储类的元数据)的最大大小。
- -Xss1m:设置每个线程的栈大小为1MB。
- -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/:当堆内存溢出时,自动进行堆内存Dump,并指定Dump文件的存储路径。
- 连接超时和读取超时:用于设置网络连接的默认超时时间,有助于控制网络请求的性能。
- -Duser.timezone=GMT+08:设置JVM的时区为东八区。
- -Dfile.encoding=UTF-8:设置默认的文件编码为UTF-8,确保正确处理国际化字符。
- -Djava.security.egd=file:/dev/./urandom:指定随机数生成器的熵源,使用/dev/./urandom可以避免在某些系统上启动时的阻塞问题。