IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    testcs_dn发表于 2017-02-27 20:28:00
    love 0

    拿到进程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)



沪ICP备19023445号-2号
友情链接