接续着上篇,这篇要说明的是如何自动导出hprof文件,针对自动导出又有分两种状况:已是运行中的程序要调整JVM参数、刚要执行的程序带上自动导出的参数,以下我示范的是刚要执行的程序带上自动导出的参数;已在运行中要调整的话,请参考:Day10-JDK查看虚拟机配置讯息工具:jinfo。
当程序遇到out of memory (OOM)
时,会马上停止,一些系统的相关讯息也会随之消失,所以自动导出文件这动作就显得相当重要。
以下两个参数是自动导出的关键:
-XX:+HeapDumpOnOutOfMemoryError
:程序发生OOM时,可产生内存快照。-XX:HeapDumpPath=<filename.hrpof>
:可指定内存快照保存位置。package Controller;
import java.util.ArrayList;
public class JmapDump{
public static void main(String[] args) throws InterruptedException{
ArrayList<String[]> list = new ArrayList<>();
for(int x = 0;x<2001;x++){
String[] arr = new String[1024*x];
list.add(arr);
Thread.sleep(50);
}
}
}
编译与执行的指令说明,请参考Day4-java语言编译器:javac & 运行工具:java (上)
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=auto.hprof Controller/JmapDump
java.lang.OutOfMemoryError: Java heap space
的状况,并且自动汇出文件
出现java.lang.OutOfMemoryError: Java heap space
後,下一行的显示讯息是Dumping heap to auto.hprof ...
,等它整个讯息显示完後,到HeapDumpPath
设定的路径下查看是否有hprof的文件
这工具就是促使我开始研究JDK内有哪些工具的契机!!不得不说,jmap在遇到OOM时真的很好用~
当时我遇到的状况是,公司的网站不定期就会整个挂掉,偏偏那时又是流量高峰的时候,当时就觉得很困惑,没动过code,好好的网站怎麽会突然出现问题,使用了jmap搭配接下来要讲的工具,让我能在网站上众多的功能中不需要大海捞针找问题!!
<<: D14/ 怎麽做拉动的操作? - Draggable Gesture
And So It Is. 其实想说一些三八的话,BUT 没有 FU XDDD 好啦三十天 ya!...
Call by Value 传值 Call by Reterence 传参照 Call by Sh...
大家好,我是长风青云。今天是铁人赛第十九天。 这是今天的影片。 来说个题外话。 今天下午我在看云端课...
并发 vs并行 并发运算就是多线程运算,且并发(concurrency)并非并行(Paralleli...
如何载入CND 1.Fork 2.齿轮 ...