jmap:

一、调用命令示例:

jmap -F-dump:format=b,file=rmsheap.bin 6086

就会在当前目录下生成rmsheap.bin的文件,6086是Pid。-F是在某些情况下连不上进程时需要加上。

二、使用:

使用mat进行分析,下载地址:http://www.eclipse.org/mat/downloads.php

可以分析内存泄露,等。还有,能看到当前类的实例个数,以证实是否有些类被占用着没有被回收:

其他的功能待发掘。

jstack:

一、调用命令示例:

jstack -F 3879 >> stack

3879是Pid,-F是连不上进程时使用。导出到stack文件。

二、使用:

Thread31548: (state = BLOCKED)

Java.lang.Object.wait(long) @bci=0 (Interpretedframe)

- java.lang.Object.wait() @bci=2, line=485(Interpreted frame)

-org.apache.commons.pool.impl.GenericObjectPool.borrowObject() @bci=108,line=811 (Interpreted frame)

-org.apache.commons.dbcp.PoolingDataSource.getConnection() @bci=4, line=96(Interpreted frame)

-org.apache.commons.dbcp.BasicDataSource.getConnection() @bci=4, line=880(Interpreted frame)

看见这些大量阻塞状态的线程,就可以大概猜出来是哪个部件出了问题。然后,可以去google上找找,找不到就看源代码分析了。再结合其他的分析。比如说这个,猜想是取不出线程对象来了,一直在等,分析下代码,看看哪些类有在用,比如看到下面这个:

Connection conn =(Connection)_pool.borrowObject();

if(conn !=null)

conn = new PoolGuardConnectionWrapper(conn);

那么猜想如果借出去了没有换的话,是否PoolGuardConnectionWrapper这个类型的实例应该不少。那就可以从mat里面去看了。再结合数据库池观察软件进行分析。

其他的分析案例可google之。

jstat –gcutil

一、调用命令示例:

jstat-gcutil 21891 250 7

21891 进程号; 250ms 采样interval; 7 count

结果信息:

S0  — Heap上的 Survivor space 0 区已使用空间的百分比

S1  — Heap上的 Survivorspace 1 区已使用空间的百分比

E   — Heap上的 Edenspace 区已使用空间的百分比

O   — Heap上的 Oldspace 区已使用空间的百分比

P   — Perm space 区已使用空间的百分比

YGC — 从应用程序启动到采样时发生 Young GC 的次数

YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)

FGC — 从应用程序启动到采样时发生 Full GC 的次数

FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)

GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

二、使用:

FGC的次数太频繁,一定要调整,尽量调低这个的次数,耗时耗性能。一般是增加此区的内存。

YGC能少就少。

其他的看比率吧?

JVisualVM:

一、调用命令示例:

直接运行-》jvisualvm

二、使用:

本地的可直接使用,如果要连远程的,需要配置JMX。

在JAVA_OPTS=里增加如下配置

-Dcom.sun.management.jmxremote.port=7028-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false

在运行了jvisualvm的机器上设置:

即可在本地进行分析了。可以看线程、dump线程快照等,可以安装额外的插件进行分析。还可以强制执行GC。

Jconsole

一、调用命令实例:

直接运行-》jvisualvm

Linux下会提示需要图形界面(如果没有的话)

二、使用:

配置JMX与jvisualvm一致。通过下面这种格式的链接进行连接:

service:jmx:rmi:///jndi/rmi://10.211.1.100:7028/jmxrmi

与jvisualvm不同的是mbean,是很多用java类的形式展示的jvm的信息。那应该编程时也可以获取得到。

Jinfo:

一、调用命令实例:

jinfo 8155

二、使用:

输入很多信息,最下面的设置参数信息-opts:,VM Flags:。

Jps:

输出java的进程用。

JDK bin指令的更多相关文章

  1. Process 'command 'D:\jdk8\jdk\bin\java.exe'' finished with non-zero exit value 2

    转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10539006.html 捣鼓了好久,现在已经不想说话,为何会出现这个问题,Process 'comman ...

  2. JDK/bin下工具列表说明

    JDK/bin下工具列表说明 appletviewer.exe:一种执行HTML文件上的Java小程序类的Java浏览器 apt.exe:注解处理工具(Annotation Processing To ...

  3. 往jdk/bin目录中增加tcnative-1.dll文件以后报错 Can't load AMD 64-bit .dll on a IA 32-bit platform

    开始时,运行Tomcat控制台报错: The APR based Apache Tomcat Native library which allows optimal performance in pr ...

  4. -bash: /root/java/jdk/bin/java: cannot execute binary file

    错误 -bash: /root/java/jdk/bin/java: cannot execute binary file 错误原因 安装的Linux的版本是32位的,下载的软件是64位,版本不兼容, ...

  5. java中jre\bin目录和jdk\bin目录下的工具功能介绍

    转自:https://blog.csdn.net/eclipse_yin/article/details/51051096 jre/bin目录下面工具说明 javac:Java编译器,将Java源代码 ...

  6. linux jdk bin安装

    1.jdk-1_5_0_06-linux-i586.bin下载到/usr/soft,赋予可执行权限:chmod 755jdk-1_5_0_06-linux-i586.bin 2.执行:./jdk-1_ ...

  7. JDK/bin目录下的不同exe文件的用途(转)

    新安装完JDk 大家是否发现安装目录的bin文件夹有很多exe文件 下面就为大家讲解不同exe文件的用途 javac:Java编译器,将Java源代码换成字节代 java:Java解释器,直接从类文件 ...

  8. LR使用Java User协议环境报错Please add the <JDK>\bin to the path and try again

    看标题报错信息就知道,这是java编译及运行环境配置问题,运行LR脚本时,LR代理找不到java的JDK环境,当然,可能有人会遇到说,我在cmd窗口javac 环境是没问题的呀,是的,这就要看你的jd ...

  9. JDK/bin目录下的不同exe文件的用途

    新安装完JDk 大家是否发现安装目录的bin文件夹有很多exe文件 下面就为大家讲解不同exe文件的用途 javac:Java编译器,将Java源代码换成字节代 java:Java解释器,直接从类文件 ...

随机推荐

  1. C++以多态方式处理数组可能会遇到的问题

    今天读<More Effective C++>时遇到一个条款:绝对不要以多态方式处理数组.以前自己也没有注意过,觉得有必要记录下来. C++是允许通过base class的指针或引用来操作 ...

  2. va_start、va_arg、va_end、va_copy 可变参函数

    1.应用与原理         在C语言中,有时我们无法给出一个函数参数的列表,比如: int printf(const char *format, ...); int fprintf(FILE *s ...

  3. Java -- 使用阻塞队列(BlockingQueue)控制线程通信

    BlockingQueeu接口是Queue的子接口,但是它的主要作用并不是作为容器,而是作为线程同步的工具. 特征: 当生产者线程试图向BlockingQueue中放入元素时,如果该队列已满,则该线程 ...

  4. An error report file with more information is saved as hs_err_pid2756.log

    An error report file with more information is saved as hs_err_pid2756.log weblogic启服务时遇到的问题,重新部署都不行, ...

  5. OpenGL实现3D自由变形

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

  6. 【pandas】pandas.Series.str.split()---字符串分割

    原创博文,转载请注明出处! 本文代码的github地址       series中的元素均为字符串时,通过str.split可将字符串按指定的分隔符拆分成若干列的形式. 例子: 拆分以逗号为分隔符的字 ...

  7. (转)读懂diff

    http://www.ruanyifeng.com/blog/2012/08/how_to_read_diff.html diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异, ...

  8. 进阶的Redis之数据持久化RDB与AOF

    大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内存数据库,它的操作都几乎基于内存.但是内存型数据库有一个很大的弊端,就是当数据库进程崩溃或系统重启的时候,如果内存数据不保存的话,里 ...

  9. excel怎么一次性生成10万个6位连续数 和 随机6位数

    1.打开工作表,在名称框输入A1:A100000 2.编辑栏输入 =int(rand()*900000+100000) 3.按ctrl+enter 需要提取的话,马上ctrl+c就可以在其它软件中粘贴 ...

  10. 变色DNA(最短路思维题)

    个人心得:太水了,还是对最短路不太深入了解,无法构建出最短路模板,然后就是读题能力, 这题的关键在于转换为最短路模板,因为DFS我在24组超时了. 假设把从i到j的代价看做是权值,那么就是对权值的确立 ...