GC学习记录

来源:互联网 发布:数据分析专业就业前景 编辑:程序博客网 时间:2024/06/06 14:21

1、Trace跟踪参数:
打开GC的LOG:-verbose:gc或者-XX:+printGC
打印GC详细信息:-XX:+PrintGCDetails
打印GC发生的时间戳:-XX:+PrintGCTimeStamps
指定GC log的位置:-Xloggc:log/gc.log(以文件输出,不配置将在控制台中输出)
每一次调用GC都打印堆信息:-XX:+PrintHeapAtGC
监控类的加载:-XX:+TraceClassLoading
打印类使用的情况:-XX:+PrintClassHistogram
(程序运行中按下Ctrl+Break后打印到控制台)
分别显示:序号、实例数量、总大小、类型

2、堆的分配参数:
指定最大堆:-Xmx1024m(指定最大堆值为1024m)
指定最小堆:-Xms10m(指定最小堆值为10m)
设置新生代大小
设置绝对值:-Xmm(如:-Xmm10m)
设置笔直:-XX:NewRatio(如-XX:NewRatio4表示新生代:老年代=1:4)
设置两个Survivor区和eden的比:-XX:SurvivorRatio
在发生OutOfMemory错误时做一个堆的转存:
导出OOM堆到文件:-XX:+HeapDumpOnOutOfMemoryError
导出OOM的路径:-XX:+HeapDumpPath
例子:-Xmx20 -Xms4m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/outofmemoryerror.dump
在发生OOM错误时,执行一个脚本:-XX:OnOutOfMemoryError(可以在.bat中重启程序,邮件发送等)
例子:-XX:OnOutOfMemoryError=d:/start.bat %p

3、得到java虚拟机内存情况:
Runtime.getRuntime().totalMemory() :返回 Java 虚拟机中的内存总量(已用内存)。
Runtime.getRuntime().maxMemory() :返回 Java 虚拟机试图使用的最大内存量(最大内存)。
Runtime.getRuntime().freeMemory() :返回 Java 虚拟机中的空闲内存量(可用内存)。

4、永久区分配参数:
设置永久区初始空间大小:-XX:PermSize
设置永久区最大空间大小:-XX:MaxPermSize

5、栈大小分配: -Xss128k

0 0
原创粉丝点击