您的位置:网站首页 > Java教程 > 正文

推荐普通开发者学习使用的 6 个 JDK 内建工具

类别:Java教程 日期:2018-5-11 16:26:52 人气: 来源:

  与你的问题不同,我认为软件工程主要是用来解决问题的。有些博客认为“每个小孩都应该学习编程”,“你认为学数学只是玩玩而已?如果你有看过我的HTML5调试器的话,你会发现我是一个程序员,但我做的工作远不止数学这些”。 两者都同意一个观点,软件工程不只是用计算机语言写的一些只言片语。软件解决的问题诠释了程序员的价值。

  你有没有留意过那些 JDK 安装附带的工具?既然那些大牛同意把那些工具加到 JDK 里,应该是有用的。

  因此,在这篇文章里,我挑了几个 Hotspot 标准安装后可用的小工具来介绍。我们决定忽略那些安全相关的和各种远程方法调用(RMI)、applets、web-start、web-services 工具。让我们把焦点放在那些普通开发者开发一般应用过程中可能有用的工具。注意,如果你只是对命令行工具感兴趣,而不仅仅是Java相关的工具,这里介绍了 5 个非常有用的命令行工具。

  再次重申,下面虽然不是 JDK 工具完整列表,但是我们想给你一个精华版本。下面是你用这些命令可以完成的真正有用的事情。

  比如在著名的“你真的懂 Classloader 吗?”里,当出现 NoSuchMethodException 错误时,我们可以执行以下命令来调查这个类究竟有哪些方法和获取这个类所有想找的信息:

  jjs命令可以启动一个 Java 命令终端,你可以把它当做计算器或者用随机的JS字符串测试JS的古怪用法。不要让另一个 Java 谜题让你措手不及!

  哈,看到刚刚发生了什么了么?但是 Java 是另一个话题,只需要知道即使没有 node.js 或浏览器你也可以用jjs知道JS是怎么工作的。

  产生一个 OutOfMemoryError 很简单(大部分情况下我们无意为之),我们只要不断地制造不让垃圾回收器起作用就可以了。

  不错,我们现在有一个可供分析的文件了。我们对这个文件执行jhat开始进行分析,jhat 会分析这个文件一个 http 服务器供我们查看结果。

  现在我们可以清晰地看到拥有 393567 结点的 HashMap 就是导致程序崩溃的元凶。虽然有更多可以检查内存分布使用情况和堆分析的工具,但是jhat是内置的,是分析的一个好的开端。

  jmap 是一个内存映射工具,它提供了另外一种不需要引发 OutOfMemoryErrors 就可以获取堆 dump 文件的方法。我们稍微修改一下的程序看一下效果。

  注意,现在我们不要消耗大量的内存,只是比较早结束并在进程关闭钩子里等待不让 JVM 退出。这样就允许我们用 jmap 连接这个进程获取珍贵的内存 dump。

  因此你可以用 jmap 的两个功能来实现,获取堆统计信息和触发一个堆 dump。因此,当执行:

  jmap -heap 1354(这里 1354 是程序运行的进程号),就可以获取一个很好的内存使用统计信息:

  jmap 还可以简单地触发当前堆 dump,之后可以随意进行分析。你可以像下面例子中的那样,传一个 -dump 参数给 jmap。

  jps 是显示 Java 程序系统进程(PID)最常用的工具。它与平台无关,非常好用。想象一下我们启动了的程序,然后想用 jmap 连接它。这个时候我们需要程序的 PID,jps 正好的派上用场。

  我们发现大多数情况下,“-mlv” 参数组合起来最好用。它会打印main方法的参数、完整包名、JVM 相关参数。这样你就可以在一大堆相似的进程中找到你想要的那个。

  jstack 是一个生成指定 JVM 进程的线程堆栈工具。当你程序一直在那里转圈圈,而你想找到线程到底做了什么导锁,那么 jstack 最适合。

  jstack 只有几个参数选项,如果你拿不准,把它们都加上。如果后面发现有些信息对你意义不大时可以调整参数它的输出。

  -F 选项可以用来强制 dump,这在进程挂起时非常有用,-I 选项可以打印同步和锁的信息。

  jstack 非常有用,我们在日常工作中使用非常频繁,特别是我们负责启动停止应用服务器的测试引擎。测试工作往往不顺利,jstack 可以让我们知道 JVM 内部的运行状态且没有什么负面的影响。

  今天我们介绍了 JDK 发行预装的超棒工具。相信我,将来某天你肯定会用到它们中的一些。所以,如果你有时间,你可以翻一翻它们的文档。

  如果你想学一些超棒的非 JDK 附带的工具,可以看看 JRebel ,它可以让你马上看到代码的改动效果,还可以看到我们新的产品 XRebel ,它可以像X光眼镜一样扫描你的 web 应用。

  如果你知道开发最佳实践中至关重要的小工具,在本文末尾发表评论或者在 twitter上@shelajev 分享一下这个工具的细节。

  下面是一个更加完整的 JDK 工具可用列表。虽然这不是一个完整的列表,为了节省篇幅,我们省掉了加密、web-services 相关的工具等。谢谢提供的资源。

  jconsole — 一个兼容 JMX 的 JVM 的图形化工具。可以本地和远程 JVM,也可以和管理单独的一个应用。

  jhat — 堆 dump 信息的浏览器,启动一个 web 服务器来显示你用诸如 jmap -dump 得到的堆 dump 信息。

  jmap — Java 内存映射工具,打印指定进程、核心文件、远程调试服务器共享内存映射或者堆内存详细信息。

  jsadebugd — Java 服务调试守护进程—依附到一个 Java 进程或核心文件并且担当一个调试服务器的作用。

  jstack —Java 堆栈信息工具——打印指定进程或核心文件或者远程调试服务器的线程堆栈。

  jrun — Java 脚本运行工具。不过你要心里有数,这实际上是一个还没支持的测试功能。未来的 JDK 版本里面可能会移除它。

  希望的内容对你们有帮助,你可以在 twitter 上 @ shelajev留下你宝贵的评论。如果你知道一些我没有提及的重要工具,请让我知道。返回搜狐,查看更多

  

关键词:jdk是什么意思
0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved