代码之家  ›  专栏  ›  技术社区  ›  AbhinavRanjan

弹簧引导应用程序未使用jemalloc

  •  0
  • AbhinavRanjan  · 技术社区  · 6 年前

    我正在试图找出内存泄漏问题。我在跟随 this 文章和尝试使用jemalloc

    以下步骤如下:

    export LD_PRELOAD=/usr/local/lib/libjemalloc.so
    export MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17
    sudo java -jar application.jar
    

    但是没有创建.heap文件。在pmap-x结果中找不到libjemalloc.so。我如何确保JVM正在使用jemalloc?服务器是Ubuntu服务器,应用程序正在使用Spring引导。

    1 回复  |  直到 6 年前
        1
  •  2
  •   apangin    6 年前

    当你奔跑 sudo Java得到的根环境没有以前导出的 LD_PRELOAD MALLOC_CONF .

    尝试

    sudo LD_PRELOAD=/usr/local/lib/libjemalloc.so \
         MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17 \
         java -jar application.jar
    

    顺便说一句, jemalloc 并不总是有用的 仿形 Java应用程序,因为它不能显示Java栈(但它是有用的) 预防 由标准分配器引起的内存泄漏)。

    如中所述,尝试异步探查器 this answer .

    也检查 this post 关于Java本机内存消耗。