005. 深入JVM学习—Java堆内存参数调整

2021-03-03 11:25:42 浏览数 (1)

1. JVM整体内存调整图解(调优关键)


  1. 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张的时候,再将内存空间释放。
  2. 由于伸缩区的分配与释放消耗资源时间,所以目标为使伸缩区为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. 内存分析工具


  • 如果开发之中发现程序执行速度变慢,那么就需要对程序运行的内存进行分析。

0 人点赞