生成heapDump文件,会对jvm的整个堆进行快照,并暂停jvm一切活动,服务器上的堆可能会比较大,在生产环境中要谨慎使用 GC时产生快照等参数。
1.在开发工具vm option中,或者是java启动参数中,添加以下参数
-XX:+HeapDumpBeforeFullGC //生产环境中,谨慎使用这个参数,因为会stop world。
-XX:+HeapDumpOnOutOfMemoryError //溢出时产生dump文件
-XX:HeapDumpPath=E:\\dumpfile //dump文件路径`
比如,插入代码:
public static void main(String[] args) {
List<UkUserInfoServiceImpl> list = new ArrayList<>(700000);
float count = 0L;
while (true){
UkUserInfoServiceImpl i = new UkUserInfoServiceImpl();
list.add(i);
System.out.println(count++);
}
}
2.有了堆dump文件后,可以使用 java自带的 jvisualvm工具查看,如果dump文件过大,需要使用
memory analyzer 等工具,进行查看。