0%

java-JVM常用参数

[toc]

Q:-client和-server的对比#

()启动较快
()性能和内存管理效率高(注意启动快和性能好不是一回事)
桌面应用一般使用(), 服务器一般使用()
A:
(-clien)启动较快
(-server)性能和内存管理效率高
桌面应用一般使用(-clien), 服务器一般使用(-server)


有4个跟内存相关的参数
-Xmn -Xms -Xmx -Xss


Q:用于配置java初始堆内存的是()#

A:
-Xms。
-X、memory、size ,内存大小


Q:用于配置java堆的最大值的是()#

A:
-Xmx。
-X、memory、max
最大内存
2583965d5747d12e17b63fad1a4480868801656b


Q:如果不设置,-Xms和-Xmx的大小分别默认是多少?#

A:
不设置的话,二者相等,默认是 物理内存/64(小于1G)


Q:用于配置新生代内存大小的最大值是:()#

你问我什么是新生代内存?
就是下面这个,1个E区加2个S区的这个内存大小

A:
-Xmn。
-X、memory、new
相类似的还有-XX:NewSize 和 -XX:MaxNewSize。


Q: 如何根据上面的参数计算老年代内存大小?#

A:
Xmx的值(堆最大值)- Xmn的值(新生代内存)


Q: 用于配置线程栈内存的是()? 替代的还有哪个参数?#

A:
-Xss。 另一个是-XX:ThreadStackSize
-Xss指 -X stack size


有下面3个和gc相关的参数
-Xnoclassgc -Xincgc -Xloggc:file
回答以下问题:

Q:可用于关闭针对类对象的gc功能的是()#

可用于关闭针对类对象的gc功能的是(-Xnoclassgc)

Q: 可用于减少gc的程序停顿时间的是()#

可用于减少gc的程序停顿时间的是(-Xincgc)

Q: 用于输出gc相关日志的是()#

用于输出gc相关日志的是(-Xloggc:file)


Q:-verbose 一般是用于什么的?#

A:
查询gc问题。

-verbose:class 输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。
-verbose:gc 输出每次GC的相关情况,后面会有更详细的介绍。
-verbose:jni 输出native方法调用的相关情况,一般用于诊断jni调用错误信息。


Q: -XX:PermSize和-XX:MaxPermSize设置的是什么内存?#

A:
方法区的内存。就是最开始那个图里的这个

通过配置-XX:PermSize以及-XX:MaxPermSize来控制这块内存的大小,jvm在启动的时候会根据-XX:PermSize初始化分配一块连续的内存块,这样的话,如果-XX:PermSize设置过大,可能会很浪费。而Max如果设置小了,可能会omm。


Q:-XX:MetaspaceSize和-XX:MaxMetaspaceSize又是什么内存?#

A:
元数据区内存。 java8引入的,用于替代上面的perm区。
无论-XX:MetaspaceSize和-XX:MaxMetaspaceSize两个参数如何设置,随着类加载越来越多不断扩容调整,直到MetaspaceSize(如果没有配置就是默认20.8m)触发FGC,上限是-XX:MaxMetaspaceSize,默认是几乎无穷大