拿到进程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下通过在任务管理器的进程中查找:
执行main方法,或启动Tomcat,都是查找javaw.exe 这个进程。
Linux下,如:ps -aux | grep java
2、jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程ID。
Windows和Linux下用法基本一致。
3、jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。
可以在命令行窗口执行:jconsole 打开它,然后点击菜单》新建连接,在弹出的窗口中就可以看到进程的PID了。
Linux估计要支持图形界面才可以了,还没试过。
4、Windows下也要以使用命令来查找
如:tasklist | findstr javaw.exe
5、Linux下的如:pidof,不过我还没用过。
6、Windows下的如:Process Monitor,Process Explorer
可能还有很多其它的工具,你知道的,这里没有的,快来告诉我!
=================文档信息===================
版权声明:非商用自由转载-保持署名-注明出处
署名(BY) :testcs_dn(微wx笑)
文章出处:[无知人生,记录点滴](http://blog.csdn.net/testcs_dn)