- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java培训机构推普通开发者学习使用的6个JDK内建工具-北京尚学堂
北京尚学堂提供
与你的问题不同,我认为软件工程主要是用来解决问题的。有些博客认为“每个小孩都应该学习编程”,“你认为学数学只是玩玩而已?如果你有看过我的HTML5调试器的话,你会发现我是一个程序员,但我做的工作远不止数学这些”。 上面两者都同意一个观点,软件工程不只是用计算机语言写的一些只言片语。软件解决的问题诠释了程序员的价值。
解决问题的最终进展来自科学、强化清晰的头脑和我们一路以来使用的工具。
你有没有留意过那些 JDK 安装附带的工具?既然那些大牛同意把那些工具加到 JDK 里,应该是有用的。
因此,在这篇文章里,我挑了几个 Hotspot 标准安装后可用的小工具来介绍。我们决定忽略那些安全相关的和各种远程方法调用(RMI)、applets、web-start、web-services 工具。让我们把焦点放在那些普通开发者开发一般应用过程中可能有用的工具。注意,如果你只是对命令行工具感兴趣,而不仅仅是Java相关的工具,这里介绍了 5 个非常有用的命令行工具。
再次重申,下面虽然不是 JDK 工具完整列表,但是我们想给你一个精华版本。下面是你用这些命令可以完成的真正有用的事情。
0、javap
你可以给 javap(Java class文件反编译器)传递这些有用的参数:
-I – 打印行数和局部变量
-p – 打印包括非public在内的所有类和成员信息,
-c – 打印方法字节码
比如在著名的“你真的懂 Classloader 吗?”演讲里,当出现 NoSuchMethodException 错误时,我们可以执行以下命令来调查这个类究竟有哪些成员方法和获取这个类所有想找的信息:
1 javap -l -c -p Util2
当调试类内部信息或者研究随机字节码顺序时,javap 非常有用。
1、jjs
jjs命令可以启动一个 JavaScript 命令终端,你可以把它当做计算器或者用随机的JS字符串测试JS的古怪用法。不要让另一个 JavaScript 谜题让你措手不及!
哈,看到刚刚发生了什么了么?但是 JavaScript 是另一个话题,只需要知道即使没有 node.js 或浏览器你也可以用jjs知道JS是怎么工作的。
2、jhat
Java堆分析工具(jhat)正如它名字描述的那样:分析dump堆信息。在下面的小例子里,我们构造了一个 OutOfMemoryError ,然后给这个 java 进程指定 -XX:+HeapDumpOnOutOfMemoryError ,这样运行时就会产生一个 dump 文件供我们分析。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class OhMyMemory {
?
?private static Map map = new HashMaplt;gt;();
?
?public static void main(String[] args) {
???Runtime.getRuntime().addShutdownHook(
?????new Thread() {
???????@Override
???????public void run() {
?????????System.out.println(We have accumulated + map.size() + entries);
???????}
?????}
???);
???for(int i = 0; ;i++) {
?????map.put(Integer.toBinaryString(i), i);
???}
?}
} 产生一个 OutOfMemoryError 很简单(大部分情况下我们无意为之),我们只要不断地制造不让垃圾回收器起作用就可以了。
运行这段代码会产生如下输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 org.shelajev.throwaway.jdktools.OhMyMemory
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid5644.hprof ...
Heap dump file created bytes in 0.645 secs]
Exception in thread main java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.resize(HashMap.java:703)
at java.util.HashMap.putVal(HashMap.java:662)
at ja
文档评论(0)