jmap -dump:format=b,file=20170307.dump 16048
file后面的是自定义的文件名,最后的数字是进程的pid
使用jvisualvm来分析dump文件:
jvisualvm是JDK自带的Java性能分析工具,在JDK的bin目录下,文件名就叫jvisualvm.exe。
jvisualvm可以监控本地、远程的java进程,实时查看进程的cpu、堆、线程等参数,对java进程生成dump文件,并对dump文件进行分析。
像我这种从服务器上dump下来文件也可以直接扔给jvisualvm来旁核渣分析。
使用方式:直接双击打开jvisualvm.exe,点击文运悄件->装入,在文件类型那一栏选择氏脊堆,选择要分析的dump文件,打开。
经过分析发现系统默认的core文件生成路径是/var/logs,但/var/logs目录并非系统自带的,系统初始安装默认自带的是/var/log,最终导致该系统出现core dump后并没能生成core文件,因此如何查询和修改系统默认的core dump文件生产路径呢?
方法如下:一. 查询core dump文件路径:
方法1: # cat /proc/sys/kerne怠珐糙貉孬股茬瘫长凯l/core_pattern。
方法2: # /sbin/sysctl kernel.core_pattern二. 修改core dump文件路径:
方法1:临时修改/proc/sys/kernel/core_pattern文件,但/proc目录本身是动态加载的,每次系统重启都会重新加载,因此这种方法只能作为临时修改。 /proc/sys/kernel/core_pattern 例:echo ‘/var/log/%e.core.%p’ >/proc/sys/kernel/core_pattern
方法2:永久修改:使戚睁辩用sysctl -w name=value命令。 例:高缺/sbin/sysctl -w kernel.core_pattern=/var/log/%e.core.%p为了更详尽的记录core dump当时的系统状态,可通过以下参数来丰富core文件的命早敬名: %% 单个%字符。
1. 进到 Control Panel -->System -->Advanced -->Startup/Recovery,请选complete memory dump并选中System Failure下的所有选项。请记住memory.dmp文件存放的位置,默认情况下此文件存放在%systemroot%下。请确认memory.dmp文件的存放路径下有足够的空间,即剩余空间大于和兄贺等于物理内存的大小。如果默认目录下没有足够的空间,请把路径指定到有足够空间的分区的根目录下。2. 进到Control Panel -->System -->Advanced -->Performance Options -->Change。尘春请确定pagefile是放在%systemroot%分区的。pagefile的大小需设唤派置成比物理内存大,如,机器内存为1G,可以把pagefile文件的大小设成1100M。如果系统提示要重新启动服务器,请暂时不要重启。
3. 添加注册表键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
Value Name: CrashOnCtrlScroll
Data Type: REG_DWORD
Value: 1
4. 重启计算机使设置生效。
5. 在问题再次发生时按住键盘右边的Ctrl键不放,再按两次ScrollLock键。如果设置正确,机器会立刻进入蓝屏,并开始将内存快照写入页面文件。您可以看到其完成进度。待其完成后,机器将会自动重启,并在重启后产生一个内存转储文件在 c:\windows\memory.dmp。
6. 对于某些笔记本没有右Ctrl键,可以通过导入附件的注册表文件来实现由左Ctrl *** 作产生Dump文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)