第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

利用jemalloc做內(nèi)存分析檢測

標簽:
Java

准备环境

下载jemalloc下载链接
因为是native的,所以我们要在自己用的机器上进行编译。我使用的是ubuntu系统。
编译时有很多编译选项,可以参考项目的wiki里。wiki
我们只需要加内存检测的功能就好,所以只加一个参数。

./configure --enable-prof
make && make install

编译成功后,我们可以看到库位置的输出

/usr/bin/install -c -d /usr/local/bin
/usr/bin/install -c -m 755 bin/jemalloc-config /usr/local/bin
/usr/bin/install -c -m 755 bin/jemalloc.sh /usr/local/bin
/usr/bin/install -c -m 755 bin/jeprof /usr/local/bin
/usr/bin/install -c -d /usr/local/include/jemalloc
/usr/bin/install -c -m 644 include/jemalloc/jemalloc.h /usr/local/include/jemalloc
/usr/bin/install -c -d /usr/local/lib
/usr/bin/install -c -m 755 lib/libjemalloc.so.2 /usr/local/lib
ln -sf libjemalloc.so.2 /usr/local/lib/libjemalloc.so
/usr/bin/install -c -d /usr/local/lib
/usr/bin/install -c -m 755 lib/libjemalloc.a /usr/local/lib
/usr/bin/install -c -m 755 lib/libjemalloc_pic.a /usr/local/lib
/usr/bin/install -c -d /usr/local/lib/pkgconfig
/usr/bin/install -c -m 644 jemalloc.pc /usr/local/lib/pkgconfig
Missing xsltproc.  doc/jemalloc.html not (re)built.
Missing xsltproc.  doc/jemalloc.3 not (re)built.
/usr/bin/install -c -d /usr/local/share/doc/jemalloc
/usr/bin/install -c -m 644 doc/jemalloc.html /usr/local/share/doc/jemalloc
/usr/bin/install -c -d /usr/local/share/man/man3
/usr/bin/install -c -m 644 doc/jemalloc.3 /usr/local/share/man/man3

这里的目录可以记录一下,知道我们需要的库要从哪里查找。

准备测试用例

下面是一个申请直接内存的例子

import java.nio.ByteBuffer;

public class Malloc {
    public static void main(String[] args) {
        new Thread(()->{
            int i=0;
            while (i<10){
                ByteBuffer buffer = ByteBuffer.allocateDirect(1024*1024*10);
                i++;
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }



        }).start();
    }
}

添加环境变量

export MALLOC_CONF="prof_leak:true,lg_prof_sample:0,prof_final:true"
export LD_PRELOAD="/usr/local/lib/libjemalloc.so"

lg_prof_sample后的数字是2的n次的意思,这里需要根据自己的阈值进行设置。
这里设置的是最后输出结果,如果是需要按照大小输出,需要更改配置。

export MALLOC_CONF="prof:true,lg_prof_interval:4"

这里多大生成一个文件需要自己设置。

java Malloc

我们可以看到这样的输出字样

<jemalloc>: Leak approximation summary: ~83261344 bytes, ~3275 objects, >= 1120 contexts
<jemalloc>: Run jeprof on "jeprof.17013.0.f.heap" for leak detail

查看分析结果

jeprof  /usr/bin/java jeprof.17013.0.f.heap 

可以用top命令查看最大

(jeprof) top
Total: 179.4 MB
   131.0  73.0%  73.0%    131.0  73.0% je_prof_backtrace
    48.0  26.8%  99.8%     79.0  44.0% SUNWprivate_1.1
     0.4   0.2% 100.0%      0.4   0.2% Java_java_util_zip_ZipFile_getZipMessage
     0.0   0.0% 100.0%      0.0   0.0% _dl_new_object
     0.0   0.0% 100.0%      0.0   0.0% allocate_dtv
     0.0   0.0% 100.0%      0.0   0.0% _dl_check_map_versions
     0.0   0.0% 100.0%      0.4   0.2% ZIP_Unlock
     0.0   0.0% 100.0%      0.0   0.0% Java_java_util_zip_Inflater_init
     0.0   0.0% 100.0%     48.0  26.8% _dlerror_run
     0.0   0.0% 100.0%      0.0   0.0% 0x0000000000400620

生成调用路径

安装依赖

sudo apt-get install  ghostscript graphviz

生成命令

jeprof --show_bytes --pdf /usr/bin/java jeprof.17013.0.f.heap  > my.pdf

适用范围

jemalloc针对java的场景一般是对系统内存的分析,堆内的对象可以做heapdump,直接内存的这种,是java程序自己保证了内存的回收的。只有例如jni这样的是容易出现问题,所以场景更多针对于系统内存的检测。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
1.6萬
獲贊與收藏
380

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消