前言
事实上,我们对堆内存的管理是可控的,可通过对jvm虚拟机相关堆内存参数设置进行控制
参数含义
-XX 对于系统级别的jvm配置 配置日志信息 垃圾回收器类型
非 -XX的 基本都是对 应用层面上的配置
- 启用 - 禁用
-XX :PrintGC 使用这个参数,虚拟机启动后,只要遇到GC就会打印日志
-XX: +UserSerialGC 配置串行回收器
-XX:+PrintGCDetails:可以查看详细信息,包括各个区的情况
-Xms: 设置java程序启动时初始堆大小
-Xmx: 设置java程序能获得的最大堆大小
-Xloggc:路径 :将打印出来的日志信息保存至指定的路径
-Xmn:设置堆的内存大小
-XX:SurvivorRatio=m:n调整Eden和Survivor的比例为m:n
码上有戏
|
|
输出结果
Memory: 4k page, physical 2076596k(144200k free), swap 4923560k(620956k free)
CommandLine flags: -XX:InitialHeapSize=5242880 -XX:MaxHeapSize=20971520 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:-UseLargePagesIndividualAllocation
0.418: [GC (Allocation Failure) 0.418: [DefNew: 655K->192K(1856K), 0.0049031 secs] 655K->466K(5952K), 0.0052607 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
0.448: [GC (Allocation Failure) 0.448: [DefNew: 1282K->0K(1856K), 0.0044827 secs]0.453: [Tenured: 1490K->1490K(4096K), 0.0033471 secs] 1557K->1490K(5952K), [Metaspace: 80K->80K(4480K)], 0.0083429 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
Heap
def new generation total 1920K, used 68K [0x03a00000, 0x03c10000, 0x040a0000)
eden space 1728K, 3% used [0x03a00000, 0x03a111f8, 0x03bb0000)
from space 192K, 0% used [0x03bb0000, 0x03bb0000, 0x03be0000)
to space 192K, 0% used [0x03be0000, 0x03be0000, 0x03c10000)
tenured generation total 8196K, used 5586K [0x040a0000, 0x048a1000, 0x04e00000)
the space 8196K, 68% used [0x040a0000, 0x04614b70, 0x04614c00, 0x048a1000)
Metaspace used 80K, capacity 2242K, committed 2368K, reserved 4480K
其中from、to分别为s0、s1区