使用 JDK 自带的 jmap 和 jhat 监控处于运行状态的 Java 进程
对于处于运行状态中的 Java 进程,JDK 自带了很多工具,允许 Java 开发人员监控运行进程中的各种状态,比如该进程内部创建了多少个对象实例,消耗了多少内存,等等。
本文基于 JDK1.8 而写成。
我下面写了一个最简单的 Java 类,包含了一个无限循环,每隔 5 秒增加一个计数器的值。
在 Eclipse 里执行这个应用。
下面介绍如何使用 jmap 和 jhat 监控这个运行进程。
1. 首先取得这个 Java 运行进程的 ID:15392。我是直接用 Windows 自带的任务管理器获得进程 ID 的。
2. 使用如下命令行:
jmap -dump:format=b,file=c:\temp\heapstatus.bin 15392
jmap 是 JDK 提供的工具,位于 JDK 安装目录的 bin 文件夹下。
执行命令行,会产生一个 heap dump 文件: headstatus.bin
3. 现在可以用另一个 JDK 工具,jhat 来读取这个 dump 文件并解析。使用命令行:
jhat c:\temp\heapstatus.bin
解析完毕后,jhat 打印出的输出提示我们 Snapshot resolved,可以从本地服务器的 7000 端口来查看。
访问 http://localhost:7000,能看到 jmap 解析结果。
localhost:7000 in browser:
点击超链接“jmap Tool”进入明细:下图意思是我的 Tool 类的实例 @0x7166babd8 的成员变量,即计数器的值已经累加到 49 了。
4. 如果大家不喜欢命令行,也可以用一个 Eclipse 的插件,MAT – Memory Analyzer Tool,也能完成和 jmap 与 jhat 命令同样的功能。
这个插件安装后,在 Eclipse 里会多出一个视图:
直接将 jmap 生成的 heap dump 文件拖到 MAT 视图里,就能自动解析并显示结果了。
点按钮“Find object by address”:
同样能够看到之前在 localhost:7000 里看到的对象实例的明细:
You can get the same result as you get previously in
这张图每位程序员应该都深有感触。
人民心目中的程序员是这样的:坐在电脑面前噼里啪啦敲着键盘,运键如飞。
现实中程序员是这样的:编码 5 分钟,调试两小时。
今天我要给大家分享一个用 WebGL 开发的网站,感兴趣的朋友可以在 Chrome 开发者工具里调试它的源码来学习 WebGL。
WebGL(Web Graphics Library)是 3D 绘图协议的一种,该技术的特色是将万能的 JavaScript 和 OpenGL ES 2.0 结合在一起,为 HTML5 的 Canvas 提供硬件 3D 加速渲染。借助 WebGL,前端开发人员可以开发出非常专业的 3D 场景和模型。
今天我要介绍的网站:Legacy Encom Boardroom Visualization 就是一个采取 JavaScript 加上 WebGL 开发 3D 场景和模型的一个典型例子。
网站地址:https://www.robscanlon.com/encom-boardroom/
进入之后,会看到一个炫目的控制台。左下角的动画效果很像电影《生化危机》里的 DNA 双螺旋模型。屏幕右边是一个控制台,你在键盘上输入的字符会有个酷炫的动画效果:
您可以手动在控制台里输入 shell 命令,比如:
cd wikipedia
ls
以此来浏览 wikipedia 文件夹下的所有内容。或者直接用鼠标左键点击 wikipedia 这个文件夹:
然后就能进入 wikipedia 这个文件夹,看到几个酷炫的 3D 模型,一个是正在旋转的地球的 3D 模型,另一个是不同维度展示的长方体模型。
在 Chrome 开发者工具的 console 页面能看到 WebGL 相关的输出。
这个网站的源码在 github:http://github.com/arscan/encom-boardroom
如果大家对 WebGL 技术感兴趣的,不妨去细读下源代码:
要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙".
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/3944b56bca5987d116c36475c】。文章转载请联系作者。
评论