`
san_yun
  • 浏览: 2663323 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

通过btrace和perftools查找Native OOM问题记录

 
阅读更多

最近线上某个应用Native OOM

 

 

 

目前查找Native OOM最好的方法就是用google perftools了,于是挂上google perftools,等待应用再次native oom,很幸运,两天后,应用就再次native oom了,于是分析crash之前那段时间谁在不断的分配堆外的内存,pprof看到的结果主要是java.util.Inflater造成的,由于之前 已经碰到过类似的case,知道如果使用了Inflater,但不显式的调用Inflater.end的话,确实会造成这个现象。
于是剩下的问题就是找出代码里什么地方调用了Inflater,这种时候btrace这个神器就可以发挥作用了,一个简单的btrace脚本:

 

import static com.sun.btrace.BTraceUtils.*;
import com.sun.btrace.annotations.*;
 
@BTrace public class Trace{
   @OnMethod(
      clazz="java.util.zip.Inflater",
      method="/.*/"
   )
   public static void traceExecute(@ProbeMethodName String methodName){
     println(concat("who call Inflater.",methodName));
     jstack();
   }
}

 执行后很快就找到了代码什么地方调用了Inflater,于是加上了显式的调用Inflater.end,搞定收工。

 

 

参考:http://rdc.taobao.com/team/jm/archives/684

 

分享到:
评论

相关推荐

    google-perftools下载

    总结来说,Google Perftools是Nginx优化不可或缺的工具,通过其提供的CPU Profiler、Heap Profiler和TCMalloc,我们可以有效地分析和改善Nginx服务器的性能,提升服务质量和用户体验。对于任何希望优化Nginx性能的...

    google perftools性能分析工具说明

    Google Perftools 的主要功能是通过采样方式对程序中的 CPU 使用情况进行“画像”,从而对程序中各个函数的调用关系和耗时情况进行分析。这种方式可以帮助开发者快速地找到程序中最耗时的部分,从而对其进行优化,以...

    谷歌的google-perftools-1.7.zip

    总的来说,`google-perftools`是开发者进行性能优化和内存管理的强大工具,通过它,开发者可以更好地理解程序的运行状况,提高代码质量和运行效率。在实际开发中,结合`google-perftools`的使用,可以有效地提升软件...

    google-perftools-1.8.2.tar.gz

    《谷歌性能工具google-perftools详解》 在深入探讨`google-perftools-1.8.2.tar.gz`这一工具之前,...通过使用`google-perftools-1.8.2.tar.gz`,开发者可以更好地理解程序的运行状况,从而提升程序的效率和稳定性。

    google-perftools.rar

    在实际项目中,使用Google Perftools和tcmalloc可以显著提升内存管理的效率,降低内存消耗。安装gperftools-2.7.tar.gz文件,可以按照以下步骤操作: 1. 解压文件:`tar -zxvf gperftools-2.7.tar.gz` 2. 进入解压...

    google-perftools-1.6.tar.gz

    《谷歌性能工具google-perftools 1.6详解》 谷歌性能工具(Google Performance Tools,简称gperftools)是一款由Google开发的开源性能分析和内存管理工具集,旨在帮助开发者优化C++程序的性能。在本文中,我们将...

    google-perftools 源码 (一款针对 C/C++ 程序的性能分析工具)

    google-perftools 需要在目标代码的开始和结尾点分别调用剖析模块的启动和终止函数,这样在目标程序运行时就可以对这段时间内程序实际占用的 CPU 时间片进行统计和分析。工具的启动和终止可以采用以下两种方式。 a. ...

    google-perftools-1.8.3-1.el6.x86_64.rpm

    google-perftools-1.8.3-1.el6.x86_64.rpm

    perf tools p0

    【标题】"perf tools p0" 指的是性能优化工具包的第一部分,可能是针对某个特定的软件或系统进行性能分析和调优的工具集合。在这个场景中,“perf”是性能分析工具的缩写,通常用于Linux环境中,用于收集和分析系统...

    perf-tools.zip

    《perf工具:Linux系统性能分析的利器》 在Linux操作系统中,perf是强大的性能分析工具,它能够帮助我们...通过对perf-tools.zip的解压和研究,我们可以深入理解Linux系统的运行机制,提升我们的程序性能优化能力。

    rack-perftools_profiler, 使用 perftools.rb 配置 rack 兼容应用程序的中间件.zip

    rack-perftools_profiler, 使用 perftools.rb 配置 rack 兼容应用程序的中间件 Rack::PerftoolsProfiler使用 perftools.rb 配置机架兼容应用的中间件快速启动假定应用程序使用 Rails 3 ( 你已经在下一节中安装了需求...

    google-perftools-开源

    用户可以通过这些文件在自己的项目中集成和使用Google Perftools,或者对其进行编译以适应特定的系统需求。 总的来说,Google Perftools是一个强大的性能优化工具,对于开发者来说,它可以帮助提升C++应用的运行...

    perf tools jre2

    标题“perf tools jre2”指的是使用perf性能分析工具针对Java运行环境(JRE)的第二个版本进行优化和调试的相关内容。perf是Linux系统中一个强大的性能分析工具,它可以用来剖析程序的性能瓶颈,帮助开发者优化代码...

    perf tools p2

    综上所述,"perf tools p2" 主题涵盖了Linux系统性能分析的关键方面,而提供的两个JAR文件可能与IBM的性能监控和数据收集解决方案有关,帮助用户更深入地了解和优化他们的应用性能。在实际使用中,结合这两个工具,...

    perf tools jre1

    标题“perf tools jre1”和描述中的关键词“perf”暗示了这可能与Java性能分析工具有关,尤其是针对JRE(Java Runtime Environment)1版本的。Perf是Linux操作系统中一个强大的性能分析工具,主要用于收集和分析系统...

    devtoolset-10-perftools-10.0-0.el7.x86_64.rpm

    离线安装包,亲测可用

    使用google-perftools优化nginx在高并发时的性能的教程(完整版)

    对于google-perftools,同样通过wget下载,解压后进行configure、make和make install操作。 2. 安装完成后,为了让系统能够找到新安装的库,需要更新动态链接库配置文件。添加`/usr/local/lib`到`/etc/ld.so.conf.d...

    perf tools p1

    结合这些文件,"perf tools p1"可能涵盖如何在Eclipse环境中集成和使用"perf"工具来分析BIRT报告生成或Web应用的性能。可能包括如何配置和启动性能监控,解析和解释收集到的数据,以及如何利用这些信息优化BIRT报告...

    perf tools p3

    "perf tools p3" 是一个专注于性能分析的工具集,主要应用于Linux系统,它提供了丰富的功能来帮助开发者和系统管理员深入理解程序运行时的行为。Perf是Linux内核自带的一套性能事件采样工具,其设计目标是提供一种...

Global site tag (gtag.js) - Google Analytics