`
gelongmei
  • 浏览: 211445 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java原生工具常用命令

 
阅读更多
jmap -histo pid [实体化情况]

jstat -gcutil -h5 `jps|grep XmlConfiguration|awk '{print $1}'` 1000

jstat -gccause -h 10 22269 1000

jstat -gcutil -h5 pid miliseconds

jmap -heap -pid

jstack pid

jmap  -dump:format=b,file=/home/jetty/logs/heap.bin pid

jmap  -dump:live,format=b,file=/home/jetty/logs/heap.bin pid



今天要处理项目下的一个内存泄露的问题。
使用了jprobe 工具,在测试环境反复调试不能发现问题的原因。
最后使用jdk自带的jps jmap jstat 等工具顺利的查找到了内存泄露的原因。
下面对jdk自带的jps jmap jstat工具总结介绍一下,希望以后同道中人google一下,找到这篇文章对大家有所帮助。
尽量介绍的简明扼要,如果需要最详细的参考请翻阅jdk doc tools部分,如果有什么疑问请留言。

jps:
    相当于linux下的ps,列出所有java相关线程的pid等信息

    example:
        [tdwiki@installed-host-eth0 ~]$ jps   
        18861 Bootstrap
        1418 Jps

jmap:
    显示java进程内存使用的相关信息
    jmap pid                     打印内存使用的摘要信息
    jmap -histo pid >mem.txt           打印比较简单的各个有多少个对象占了多少内存的信息,一般重定向的文件
    jmap -dump:format=b,file= mem.dat pid        将内存使用的详细情况输出到mem.dat 文件
        用jhat命令可以参看 jhat -port 7000 mem.dat
        在浏览器中访问:http://10.5.22.65:7000/  查看详细信息

jstat:
    显示java虚拟机的一些统计信息
    jstat  -选项 pid 间隔显示时间 显示次数

    jstat  -gc  18861 250 10
    jstat  -gccapacity 18861 250 10
    jstat  -gcnew 18861 250 10
    jstat  -gcnewcapacity 18861 250 10
    jstat  -gcold 18861 250 10

我的调试流程
      内存泄漏一般都是有一定特征的,任何代码和数据都要占用内存,我简单总结内存泄漏的特征是内存占用不可控制,GC不可回收。我追踪内存使用量的曲线发现一些特征,在估计虚拟机即将崩溃时,使用 jmap -histo pid >mem.txt 发现相关内存泄漏的对象占用非常打比例的内存空间,然后很容易猜测问题大概的位置,一下子就解决了。
分享到:
评论

相关推荐

    Android中级篇之用JAVA代码执行shell命令.rar_Android 执行shell_android_effectoh

    Android系统基于Linux内核,因此支持使用Linux命令行工具,即shell命令。这些命令提供了对系统资源的直接操作能力,如创建、删除文件,管理进程等。然而,由于Android的安全模型,应用通常不能直接在用户界面下执行...

    Java实现ping功能

    在IT行业中,网络通信是至关重要的一个领域,而"ping"命令则是网络诊断最常用的工具之一。这个项目名为"Java实现ping功能",它利用Java编程语言,结合Spring Boot、Thymeleaf和Maven等技术,实现了类似操作系统内置...

    Java和PLC通讯Demo

    原生Demo通常是指不依赖第三方API或接口,直接利用Java语言底层的通信机制来实现PLC通讯。这可能涉及到直接操作串口,设置波特率、数据位、停止位、校验位等参数,然后发送和接收二进制数据。原生Demo的编写需要对...

    JAVA反编译文件解决中文乱码

    反编译是将字节码还原为接近原生的源代码的过程,常用工具有JD-GUI,它是一款直观的Java反编译器。然而,当这些.class文件中包含中文字符时,如果没有正确处理编码,可能会出现中文乱码的问题。本文将详细介绍如何...

    java开源包4

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包6

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包101

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包9

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包5

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包8

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包10

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java转成exe可执行文件

    在本案例中,开发者使用了Java的Swing库来构建图形用户界面(GUI),这是一种常用的Java GUI工具包,提供了丰富的组件和布局管理器,用于创建桌面应用程序。 首先,SwingGUI是Java AWT(抽象窗口工具包)的扩展,它...

    java开源包3

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java开源包1

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    Java资源包01

    SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的...

    java语言的windows编程

    4. **菜单和工具栏**:在JavaFX中,可以使用`MenuBar`和`ToolBar`类来创建菜单和工具栏,它们通常包含各种命令,如新建、打开、关闭、保存等。 5. **JNI调用**:如果需要实现更复杂的Windows功能,例如访问剪贴板、...

    《Core Java》知识点总结.doc

    7. **常用命令** - `javac`:编译Java源文件。 - `java`:运行已编译的Java类。 - `jar`:打包Java应用为.jar文件,便于分发和运行。 - `javadoc`:生成Java源代码的API文档。 这些只是《Core Java》中的一...

    常用的JAR包,只有很少几个常用的

    运行JAR文件,可以通过Java的`java -jar`命令,指定MANIFEST.MF中的`Main-Class`属性来执行主类。 接下来,我们探讨一下可能包含在"常用JAR包"中的几个关键库: 1. **Apache Commons**: Apache Commons 是一系列...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题62.linux常用命令 Java面试题63:怎么操作linux服务器 Java面试题64:有没有使用过云主机 Java面试题65:数据库优化方面的事情 Java面试题66:如果查询和定位慢查询 Java面试题67:数据库优化之数据库表...

Global site tag (gtag.js) - Google Analytics