1. JVM整体内存调整图解(调优关键)
- 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张的时候,再将内存空间释放。
- 由于伸缩区的分配与释放消耗资源时间,所以目标为使伸缩区为0。
2. 堆内存空间调整参数
No. | 参数名称 | 描述 |
---|---|---|
01 | -Xms | 设置初始分配大小,默认为物理内存的 1/64 |
02 | -Xmx | 最大分配内存,默认为物理内存的 1/4 |
03 | -XX: PrintGCDetails | 输出详细的GC处理日志 |
04 | -XX: PrintGCTimeStamps | 输出GC的时间戳信息 |
05 | -XX: PrintGCDateStamps | 输出GC时间戳信息(以日期的形式,如2018-08-15T16:53:15.155 0800) |
06 | -XX: PrintHeapAtGC | 在GC进行处理的前后打印堆内存信息 |
07 | -Xloggc:保存路径 | 设置日志信息保存文件 |
- 在整个堆内存的调整策略之中,有经验的人都只会调整两个参数:-Xmx、-Xms。
- 当默认内存大小等于最大内存大小,伸缩区就会为0。
3. 范例
- 如果想要取得内存的整体信息直接利用Runtime类即可。
1. 打印最大内存和可用内存
2. 手动设置最大内存和可用内存
3. 观察GC的详细日志
4. 测试GC处理
4. 内存分析工具
- 如果开发之中发现程序执行速度变慢,那么就需要对程序运行的内存进行分析。