java 堆外内存排查
操作系统:centos7
jdk版本8
--提前下载安装依赖
yum -y install gcc gcc-c++
-- 下载安装包
wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99.tar.gz
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.6.1/gperftools-2.6.1.tar.gz
--解压
tar -zxvf libunwind-0.99.tar.gz
tar -zxvf gperftools-2.6.1.tar.gz
--编译
./configure --prefix=/usr/local/app/tool/gperftools && make -j && make install
./configure --prefix=/usr/local/app/tool/libunwind && make -j && make install
--配置环境变量
vim /etc/ld.so.conf.d/usr_local_lib.conf
/usr/local/app/tool/gperftools/lib
/usr/local/app/tool/libunwind/lib
--刷新配置动态链接库
/sbin/ldconfig
--程序运行前织入共享库
export LD_PRELOAD=/usr/local/app/tool/gperftools/lib/libtcmalloc.so
export HEAPPROFILE=/usr/local/app/testapp/hprof
java -jar merciless-0.0.1-SNAPSHOT.jar
-- 查看追踪内存
tool/gperftools/bin/pprof /bin/ls --text .0001.heap
tool/gperftools/bin/pprof --text /usr/local/app/jdk/bin/java 0001.heap
--直接追踪linux内存分配
strace -f -e 'brk,mmap,munmap' -p pid
pmap -p 你的pid -x |sort -k 2 -r -n
gdb --pid 你的pid
--dump文件
dump memory dunmp出来的文件名字 地址开始位置 地址结束位置
--查看dump文件的内容
Strings dump文件