你可能不知道的几个java小工具

常做Java开发的朋友,不管是做纯后端开发,还是做Java Web开发,有一些操作你一定会经常遇到。比如:

列出当前系统上运行了哪些Java应用

这些应用的部署路径是什 么

某个Java应用的堆内存使用情况

遇到类似的情况,你一般是怎么解决的?

我在工作中见过许多人,想要查看当前正在运行的Java应用时,会通过进程管理器(Windows下),或者使用
ps -ef | grep java (在Linux下使用命令行)。通过这些来获取运行的Java应用列表,以及对应的PID(进程ID)。
而查看堆内存,可能会下载一些第三方的工具等。

其实,JDK中已经默认自带了一些小工具,非常好用,使用方便快捷。不信你看下面这些:

jps (Java Virtual Mathine Process Status Tool)

从名称可以看出个大概。主要是把Java进程的状态列出来。
这个命令可以指定hostid,从而列出远程主机的Java进程。
这个命令有几个参数,我比较常用的有
-l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。

-v 输出传给JVM的参数。

一般通过jps -lv就可以把本地的所有Java进程,以及传给JVM的参数,运行的文件位置都列出来。这样,一个命令上面前两个问题就解决了。

2. jinfo (Java Configuration Info)

主要用来查看Java进程使用的一些配置参数,比如设置的堆内存有多大,是否允许在OOM产生的时候dump出堆信息等。
除此之外,该命令还可以动态更改配置的项,比如上面提到的OOM dump这个开关是关着的,那可以在运行的时候再打开它。

3. jstate (Java Virtual Machine Statistics Monitoring Tool)

这个命令选项很多,根据不同的选项,可以统计你感兴趣的不同的数据,比如你对JVM的垃圾回收数据感兴趣,可以直接通过指定 -gc 来查看,而更常用的一个选项是 -gcutil 可以统计新生代,老年代垃圾收集的情况。
当然,JDK自带的小工具还有很多,以上面这几个工具为例,其中后两者在执行时,都需要先知道JVM的PID之后,才能执行,毕竟这些工具需要了解你要查看哪个JVM。

下面我们来简要了解下jps的大概实现原理。
每个JVM在启动后,其本质上依然是操作系统的一个进程,都会存在一个PID值与之对应。而JVM内部的实现,则是在每次启动之后,在本地的一个目录内创建一个以当前JVM的PID为文件名的文件,文件路径和操作系统有关,我的windows7下路径是

C:\Users{这里是你的用户名}\AppData\Local\Temp\hsperfdata_{这个也是你的用户名}
在这个目录下,所有你下在运行的JVM对应的PID文件都在这里了。下图是我的列表


同样的道理,如果你曾经用过JConsole(这也是个JDK自带的小工具),可能马上就有感觉了。因为它也是通过读这个目录下的文件信息得到需要的数据,你看下面这个Jconsole新建连接的图,这些PID刚好这上面的文件对应是不是。

PS: 这些原理,我是通过看OpenJDK源码了解到的,如果大家感兴趣,可以一起交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • jstack-- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java sta...
    not_null阅读 7,941评论 2 62
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,724评论 6 342
  • 人性本善,还是人性本恶?又或者最初本就没有所谓的善恶之分。这样说也让人生疑,那又是什么导致形成如今的对与错...
    隐l阅读 528评论 0 0
  • 自古以来坐车买票是天经地义的事。现在有了互联网,动动手指就可以减少很多的繁琐环节,节约了许多时间。最近的一次坐车经...
    补拙莫如勤LV阅读 189评论 0 0