找出Java进程ID pid的N种方法

拿到进程ID pid能做些什么呢?

暴力的杀掉它,比如:kill -9 123, taskkill /PID 123, 123也就是你要kill的pid。

使用 jinfo:可以输出并修改运行时的java 进程的opts(选项,项目项)。

如:jinfo 56860

Attaching to process ID 56860, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 25.31-b07

Java System Properties:


java.runtime.name = Java(TM) SE Runtime Environment

java.vm.version = 25.31-b07

sun.boot.library.path = D:\Java\jdk\jre\bin

java.vendor.url = http://java.oracle.com/

java.vm.vendor = Oracle Corporation

path.separator = ;

java.rmi.server.randomIDs = true

file.encoding.pkg = sun.io

java.vm.name = Java HotSpot(TM) 64-Bit Server VM

sun.os.patch.level = Service Pack 1

sun.java.launcher = SUN_STANDARD

user.script =

user.country = CN

user.dir = D:\javaProject\javatrans

java.vm.specification.name = Java Virtual Machine Specification

java.runtime.version = 1.8.0_31-b13

……省略N行

使用jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。

如:jmap 56860

Attaching to process ID 56860, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 25.31-b07

0x000000000f000000      24K     C:\Program Files\NVIDIA Corporation\CoProcManage

r\detoured.dll

0x0000000057e70000      840K    D:\Java\jdk\jre\bin\msvcr100.dll

0x0000000069d90000      212K    D:\Java\jdk\jre\bin\jdwp.dll

0x000000006a0f0000      8552K   D:\Java\jdk\jre\bin\server\jvm.dll

0x000000006c760000      140K    D:\Java\jdk\jre\bin\instrument.dll

0x000000006e540000      52K     D:\Java\jdk\jre\bin\management.dll

0x000000006e550000      68K     D:\Java\jdk\jre\bin\nio.dll

0x000000006ee40000      104K    D:\Java\jdk\jre\bin\net.dll

0x000000006fc30000      32K     D:\Java\jdk\jre\bin\npt.dll

0x0000000070e10000      36K     D:\Java\jdk\jre\bin\dt_socket.dll

0x0000000070e20000      88K     D:\Java\jdk\jre\bin\zip.dll

0x0000000071220000      160K    D:\Java\jdk\jre\bin\java.dll

0x0000000071400000      60K     D:\Java\jdk\jre\bin\verify.dll

0x0000000076e70000      1000K   C:\Windows\system32\USER32.dll

0x0000000076f70000      1152K   C:\Windows\system32\kernel32.dll

……省略N行

使用jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

如:jstat -gcnew 56860

 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT

 512.0  512.0    0.0   96.0  1  15  512.0  24064.0   2313.0     45    0.167

嗯嗯,大概的说了几种用法,下面我们看看找到PID的几种方法。

1、任务管理器

Windows下通过在任务管理器的进程中查找:

找出Java进程ID pid的N种方法

执行main方法,或启动Tomcat,都是查找javaw.exe 这个进程。

Linux下,如:ps -aux | grep java

2、jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程ID。

找出Java进程ID pid的N种方法

Windows和Linux下用法基本一致。

3、jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。

找出Java进程ID pid的N种方法

可以在命令行窗口执行:jconsole 打开它,然后点击菜单》新建连接,在弹出的窗口中就可以看到进程的PID了。

Linux估计要支持图形界面才可以了,还没试过。

4、Windows下也要以使用命令来查找

如:tasklist | findstr javaw.exe

找出Java进程ID pid的N种方法

5、Linux下的如:pidof,不过我还没用过。

6、Windows下的如:Process Monitor,Process Explorer

找出Java进程ID pid的N种方法

找出Java进程ID pid的N种方法

可能还有很多其它的工具,你知道的,这里没有的,快来告诉我!

=================文档信息===================

版权声明:非商用*转载-保持署名-注明出处

署名(BY) :testcs_dn(微wx笑)

文章出处:[无知人生,记录点滴](http://blog.csdn.net/testcs_dn)

上一篇:Android JetPack系列文章 ,持续更新中


下一篇:每日一博 | 各种动态渲染 Element 方式的性能探究