大家好,我是锋哥。今天分享关于JVM启动参数的JVM面试题,希望对大家有帮助;
常用的JVM启动参数有哪些?
JVM可配置参数已经达到1000多个,其中GC和内存配置相关的JVM参数就有600多个。
但在绝大部分业务场景下,常用的JVM配置参数也就10来个。
例如:
1 # JVM启动参数不换行
2 # 设置堆内存
3 ‐Xmx4g ‐Xms4g
4 # 指定GC算法
5 ‐XX:+UseG1GC ‐XX:MaxGCPauseMillis=50
6 # 指定GC并行线程数
7 ‐XX:ParallelGCThreads=4
8 # 打印GC日志
9 ‐XX:+PrintGCDetails ‐XX:+PrintGCDateStamps
10 # 指定GC日志文件
11 ‐Xloggc:gc.log
12 # 指定Meta区的最大值
13 ‐XX:MaxMetaspaceSize=2g
14 # 设置单个线程栈的大小
15 ‐Xss1m
16 # 指定堆内存溢出时自动进行Dump
17 ‐XX:+HeapDumpOnOutOfMemoryError
18 ‐XX:HeapDumpPath=/usr/local/
此外,还有一些常用的属性配置:
1 # 指定默认的连接超时时间
2 ‐Dsun.net.client.defaultConnectTimeout=2000
3 ‐Dsun.net.client.defaultReadTimeout=2000
4 # 指定时区
5 ‐Duser.timezone=GMT+08
6 # 设置默认的文件编码为UTF‐8
7 ‐Dfile.encoding=UTF‐8
8 # 指定随机数熵源(Entropy Source)
9 ‐Djava.security.egd=file:/dev/./urandom
1000道 互联网大厂Java工程师 精选面试题-Java资源分享网1000道 互联网大厂Java工程师 精选面试题http://java.python222.com/article/971
设置堆内存XMX应该考虑哪些因素?
需要根据系统的配置来确定,要给操作系统和JVM本身留下一定的剩余空间。
推荐配置系统或容器里可用内存的 70-80% 最好。
假设物理内存是8G,设置多大堆内存比较合适?
比如说系统有 8G 物理内存,系统自己可能会用掉一点,大概还有 7.5G 可以用,那
么建议配置 ‐Xmx6 。
说明: 7.5G*0.8 = 6G ,如果知道系统里有明确使用堆外内存的地方,还需要
进一步降低这个值。
‐Xm 设置的值与JVM进程所占用的内存有什么关系?
JVM总内存=栈+堆+非堆+堆外+Native
怎样开启GC日志?
一般来说,JDK8及以下版本通过以下参数来开启GC日志:
1 ‐XX:+PrintGCDetails ‐XX:+PrintGCDateStamps ‐Xloggc:gc.log
如果是在JDK9及以上的版本,则格式略有不同:
1 ‐Xlog:gc*=info:file=gc.log:time:filecount=0