共计 1361 个字符,预计需要花费 4 分钟才能阅读完成。
JVM 系列笔记目录
- 虚拟机的根底概念
- class 文件构造
- class 文件加载过程
- jvm 内存模型
- JVM 罕用指令
- GC 与调优
理解 HotSpot 常用命令行参数
JVM 的命令行参数参考: https://docs.oracle.com/javas…
- 规范 所有版本反对
-X 非标准 特定版本反对
-XX 不稳固 下个版本可能会勾销
常见和本文中可能用到的参数记录一下,具体垃圾回收器的参数后续调优的具体阐明。
参数 | 阐明 |
---|---|
-Xmx | 最大可用内存 |
-Xms | 初始内存,个别和 -Xmx 雷同,防止重新分配 |
-Xmn | 年老代大小,JVM 内存 = 年老代 + 老年代大小 + 永恒代 (个别 64M) |
-XX:+PrintFlagsInitial | 打印默认参数值 |
-XX:+PrintFlagsFinal | 打印最终参数值 |
-XX:+PrintGC <br/>-XX:+PrintGCDetails -XX:+PrintGCTimeStamps |
打印 GC 状况、GC 具体日志、GC 日志工夫戳 |
常见垃圾回收器组合参数设定:(1.8)
如何查看 JVM 默认的垃圾回收器?
java -XX:+PrintCommandLineFlags -version
- 通过 GC 日志来分别是何种垃圾回收器
常见垃圾回收器组合参数设定:(1.8 版本的)
>1. -XX:+UseSerialGC = Serial New (DefNew) + Serial Old 小型程序应用,默认状况下不会是这种选项,HotSpot 会依据计算及配置和 JDK 版本主动抉择收集器
>2. -XX:+UseParNewGC = ParNew + SerialOld 这个组合曾经很少用(在某些版本中曾经废除)>3. -XX:+UseConc(urrent)MarkSweepGC = ParNew + CMS + Serial Old
>4. -XX:+UseParallelGC = Parallel Scavenge + Parallel Old (1.8 默认)【PS + SerialOld】>5. -XX:+UseParallelOldGC = Parallel Scavenge + Parallel Old
>6. -XX:+UseG1GC = G1
PS 的 GC 日志详解
每一种垃圾回收器的日志是不一样。这里提供一个样例来具体解释 PS 的 GC 日志。
public class HelloGC{public static void main(String[] args){System.out.println("HelloGC!");
List list = new ArrayList();
for(;;){
// 死循环中每次调配 1M 大小的数组,寄存在 list 中,JVM 内存不足的时候会产生 GC
byte[] b = new byte[1024*1024];
list.add(b);
}
}
}
编译后启动命令:java -Xmn10M -Xms40M -Xmx60M -XX:+PrintCommandLineFlags -XX:+PrintGC -XX:+UseParallelGC HelloGC
这里设置了最大内存为 60M,初始内存为 40M, 新生代的内存为 10M,应用 PS 垃圾回收器,并打印 GC 的回收状况。程序运行很快就会产生 GC 日志。
回收的日志状况:
HeapDump 状况,0x000xxxx 内存地址指的是:起始地址、应用空间完结地址、整体空间完结地址;
常识分享,转载请注明出处。学无先后,达者为先!
正文完