jvm总结之三:虚拟机堆参数

前言

事实上,我们对堆内存的管理是可控的,可通过对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

码上有戏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class test2 {
public static void main(String[] args) {
//-Xms20m -Xmx20m -Xmn10 -XX:+PrintGCDetails -Xloggc:d:\gc1.log
//查看GC信息
System.out.println("max memory:" + Runtime.getRuntime().maxMemory());
System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
byte[] b1 = new byte[1*1024*1024];
System.out.println("分配了1M");
System.out.println("max memory:" + Runtime.getRuntime().maxMemory());
System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
byte[] b2 = new byte[4*1024*1024];
System.out.println("分配了4M");
System.out.println("max memory:" + Runtime.getRuntime().maxMemory());
System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
}
}

输出结果

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区

热评文章