查看运行程序pid

jps —— jdk 自带工具

与linux上的ps类似,用来显示本地的java进程,并显示他们的进程ID

jconsole:一个java GUI监视工具

可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。
命令行内输入 jconsole, 会弹出下图所示窗口。可以选择进程。

连接上 进程之后,将会展示如下窗口:可以看到具体的内存使用情况

windows tasklist

tasklist | findstr java.exe. 可以看到 java 进程,但是看不到具体是哪个应用程序

根据pid 查看进程相关数据

jinfo

可以输出并修改运行时的java 进程的opts。会展示很多进程相关信息,下图截取了部分内容。

jstack

jstack pid 查看运行java程序的java stack和native stack的信息。可以轻松得知当前线程的运行情况 。下图是部分截图

注:这个和 thread dump 是同样的结果。但是thread dump是用kill -3 pid命令,服务器上面少用kill为妙

jstack [-l] pid > xxx.log 将所有线程信息输入到指定文件中
jstack -F [-m] [-l] pid >xxx.log 强制打印栈信息

top

top 找出占用cpu高(或者执行时间很长)的程序pid
top -H -p pid 找出占用cpu高(或执行时间长)的线程pid

jmap

打印出某个java进程(使用pid)内存内的所有对象的情况。
-dump:[live,]format=b,file= 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
-finalizerinfo 打印正等候回收的对象的信息.
-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.
-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
-permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.
-F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.
-h | -help 打印辅助信息
-J 传递参数给jmap启动的jvm.
jmap pid 下图截取了部分内容。

jmap -dump:format=b,file=heap.txt pid(导出内存,据说对性能有影响,小心使用)
把内存结构全部dump到二进制文件中,通过IBM的HeapAnalyzer和eclipse的MemoryAnalyzer都可以分析内存结构。

jstat

一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。
jstat -class pid 显示加载class的数量,及所占空间等信息。
jstat -compiler pid 显示VM实时编译的数量等信息。
jstat -gc pid 显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
jstat -gccapacity pid 可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
jstat -gcnew pid new对象的信息。

jstat -gcnewcapacity pid: new对象的信息及其占用量。
jstat -gcold pid: old对象的信息。
jstat -gcoldcapacity pid: old对象的信息及其占用量。
jstat -gcpermcapacity pid: perm对象的信息及其占用量。
jstat -util pid: 统计gc信息统计。
jstat -printcompilation pid: 当前VM执行的信息。加上两个数字,如:jstat -printcompilation 15900 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题

一些术语的中文解释:
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)NGC:年轻代(young)中当前的容量 (字节)

OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制

JAVA 查看线程、内存相关推荐

  1. java查看jvm内存使用情况

    java查看jvm内存使用情况 (2012-03-22 15:50:54) 标签: jvm 内存 虚拟机 分配 it java.lang.Runtime类提供了查看当前JVM内存的使用情况.每个jav ...

  2. java 查看堆内存_查看java内存情况的几个常用命令

    1.jinfo jinfo:的用处比较简单,就是能输出并修改运行时的java进程的运行参数.用法是jinfo -opt pid 如:查看52606的MaxPerm大小可以用 jinfo -flag M ...

  3. java异步线程内存可见性实验

    [README] 本文演示了内存可见性的场景,以及解决方法: 相关定义如下(转自java并发编程实战,一本好书,强烈推荐): 内存可见性:一个线程修改了对象状态后, 其他线程可以看到修改后的结果: 对 ...

  4. java 查看对象内存占用大小

    1.POM 依赖 <dependency><groupId>com.carrotsearch</groupId><artifactId>java-siz ...

  5. java 查看线程死锁_java 查看线程死锁

    那我们怎么确定一定是死锁呢?有两种方法. 1>使用JDK给我们的的工具JConsole,可以通过打开cmd然后输入jconsole打开. 1)连接到需要查看的进程. 2)打开线程选项卡,然后点击 ...

  6. java查看线程使用情况,查看java的线程cpu使用情况

    说来惭愧,那么些年写java,至今也没碰到需要对jvm内部线程cpu使用情况的研究. 今天碰到一例,因为用了flink,出现了一个处理瓶颈,不得不深入一探究竟. 就Linux的操作系统原理而言,jvm ...

  7. java 内存情况_java查看jvm内存使用情况

    java查看jvm内存使用情况 (2012-03-22 15:50:54) 标签: jvm 内存 虚拟机 分配 it java.lang.Runtime类提供了查看当前JVM内存的使用情况.每个jav ...

  8. java命令查看jvm内存

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让 ...

  9. jmap java opts_jmap --查看JVM内存使用详情

    概述 命令jmap是一个多功能的命令.它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息.查看 ClassLoader 的信息以及 finalizer 队列. jmap命 ...

最新文章

  1. Windows下电脑硬盘的日常维护细则
  2. 19 Handler 子线程向主线程发送信息
  3. $_SERVER['SCRIPT_NAME']
  4. vue3.x通过ref属性获取元素
  5. Tomcat源码中ObjectName这个类的作用
  6. 智乃的树旋转(easy version)(思维+暴力)
  7. MATLAB多算法进行图像去雾处理
  8. java计算机毕业设计中小型超市管理系统录像补源码+数据库+系统+lw文档+mybatis+运行部署
  9. 发布园友设计的新款博客皮肤BlueSky
  10. 职高计算机应用基础学的什么,职高计算机应用基础教法初探
  11. js三座大山----(第一座山)
  12. ab压测_上传图片进行压测
  13. TeamTalk 详细介绍
  14. P、NP、NPC概念总结
  15. windows2012r2文件服务器部署,Windows server 2012部署和配置群集文件服务器
  16. python技术文档
  17. WinAPI执行外部程序和创建新进程:CreateProcess()的使用
  18. LaTeX之公式及编号
  19. 弹性布局flex(兼容不同浏览器)
  20. TypeScript与Haxe:两种截然不同的JS转译工具横向对比

热门文章

  1. v-on:click获取当前事件对象元素
  2. 《Adobe After Effects CS6中文版经典教程》——2.9 渲染合成图像
  3. 勒索病毒的发展史及解密办法
  4. 临沂大学 计算机学院,2018临沂大学首届计算机文化节组织动员大会
  5. Steaming技术初体验
  6. Appium--swipe滑动方法
  7. java BeanUtils.populate 学习
  8. ICCV, ECCV, CVPR,IEEE的关系
  9. python实现千牛客服自动回复语_千牛客服自动回复话术
  10. 刚体运动部分(坐标、旋转、平移、李群和李代数)