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. New Concept English three (23)

    31w 45 People become quite illogical when they try to decide what can be eaten and what cannot be ea ...

  2. CDN推送

    一.什么是CDN推送 当后端服务器中的DNS有更新的时候,在varnish的缓存中应该及时地同步后端服务器中的内容.相当于清空varnish中的缓存,当下一次进行访问时,直接从服务器中获取新的内容. ...

  3. PostgreSQL逻辑复制使用记录

    之前逻辑复制刚刚出来的时候就使用过,但是没有进行整理,这次一个项目需要逻辑复制的自动迁移,再次拾起逻辑复制. 在此之前有两个疑问: 1)同一个表,既有流复制,又有逻辑复制,这样数据会有两份吗? --不 ...

  4. cpu的用户态和内核态和内存的用户空间内核空间

    谈到CPU的这两个工作状态,也就是处理器的这两个工作状态,那我们有必要说一下为什么搞出这两个鬼玩意出来.       用过电脑的娃娃们肯定知道在一个系统中既有操作系统的程序,也由普通用户的程序.但那么 ...

  5. BASE理论

    BASE是Basiclly Available(基本可用),Soft state(软状态),Eventually consistent(最终一致性)三个短语的缩写. BASE是对CAP中一致性和可用性 ...

  6. HAWQ + MADlib 玩转数据挖掘之(一)——安装

    一.MADlib简介 MADlib是Pivotal公司与伯克利大学合作的一个开源机器学习库,提供了精确的数据并行实现.统计和机器学习方法对结构化和非结构化数据进行分析,主要目的是扩展数据库的分析能力, ...

  7. ss-libev 源码解析local篇(5):ss-local之remote_send_cb

    remote_send_cb这个回调函数的工作是将从客户端收取来的数据转发给ss-server.在之前阅读server_recv_cb代码时可以看到,在STAGE_STREAM阶段有几种可能都会开启r ...

  8. Verilog乘法器

    乘法器,不能用乘号直接表示,略坑呀 坑归坑,做还是要做的 思路:首先乘法分为有符号乘与无符号乘,所以建立两个module分别运算有符号与无符号.然后在总module中用case语句判断输出应赋的值. ...

  9. python 生成器推导式与列表推导式的区别

    生成器表达式现用现生成,列表推导式一次性生成静态数据 L = [2, 3, 5, 7] L2 = (x**2+1 for x in L) it = iter(L2) print(next(it)) L ...

  10. Linux 中断处理

    HardIRQ 和 softirq : http://www.it165.net/os/html/201211/3766.html 博文:http://blog.csdn.net/yin262/art ...