安装gperftools(google performance tools)来分析java的堆外(超出-Xmx所设置的heap size的部分)内存泄露
如果是堆内泄漏,则最大内存使用不会超过-Xmx所设置的大小,基本上使用jmap之类的都直接可以查到问题。
安装:
$ sudo yum -y install graphviz gv
$ sudo yum -y install gcc make
$ sudo yum -y install gcc gcc-c++
$ tar -zxvf libunwind-1.4.0.tar.gz
$ ./configure
$ make
$ sudo make install
$ ll /usr/local/lib/
$ cd ..
$ tar -zxvf gperftools-2.8.tar.gz
$ cd gperftools-2.8
$ ./configure
$ make
$ sudo make install
$ ll /usr/local/lib/
$ ll /usr/local/bin/
$ sudo vi /etc/ld.so.conf.d/gperftools.conf
/usr/local/lib
$ sudo ldconfig
$ sudo ldconfig -p | grep libtcmalloc
$ sudo ldconfig -p | grep libunwind
使用:
perftools是通过Linux的LD_PRELOAD达到java应用程序运行时,当调用malloc时换用它的libtcmalloc.