JDK5.0包括的调试工具:
我们在这里对JDK5.0的调试工具做大致的概念性的介绍,然后希望通过介绍我自己在实际工作中使用这些工具解决问题的实例来让大家对这些工具有更深入的了解。
JDK5.0里面加入了jstack, jconsole, jinfo, jmap, jdb, jstat, jps, 下面对这些工具做简单介绍:
jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。目前只有在Solaris和Linux的JDK版本里面才有。
jconsole – jconsole是基于 Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了程序的内存使用,Heap size, 线程的状态,类的分配状态和空间使用等等。
jinfo – jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息,目前只有在Solaris和Linux的JDK版本里面才有。
jmap – jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等等,目前只有在Solaris和Linux的JDK版本里面才有。
jdb – jdb 用来对core文件和正在运行的Java进程进行实时地调试,里面包含了丰富的命令帮助您进行调试,它的功能和Sun studio里面所带的dbx非常相似,但 jdb是专门用来针对Java应用程序的。
jstat – jstat利用了JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控等等。
jps – jps是用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。
另外,还有些其他附带的工具在这里没有列出,比如Heap Analysis Tool, kill -3 方法等等,这些在JDK5.0之前就有,同样也是非常有用的性能调优工具,大家可以参照相应的文档资料来学习,在文章后面也会推荐一些相应的文档给大家作为参考。
好,说了这么多,让我们来看看JDK5.0自带的这些工具在现实工作能给我们带来什么帮助,下面是我和ISV一起共同工作的实际例子,在这里把它们简单阐述出来,希望对大家有所帮助。
jconsole和jstack使用实例:
在做过的项目中,曾经有几个是使用jstack和jconsole来解决问题的。在下面的例子中,由于部分代码涉及到公司名字,我使用了xxx来代替。
1. 其中的一个是Web2.0的客户,由于目前Sun Microsystem公司推出的Niagara系列非常适合网络方面的多线程应用,并且已经在业界非常出名,所以他们决定使用T2000来测试一下如果应用到他们自己的应用是否能够获得出众的性能。
整个应用的架构如下:
Apache 2.0.59 + Resin EE 2.1.17 + Jdk 1.5.0.07 + 9
运行的操作系统:
Solaris 10 Update 3 (11/06), EIS patches包.
测试工具:
Apache benchmark tool.
在客户的测试环境中,我们分别做了Apache, Resin, Solaris的相应调整,其中包括了Apache使用Prefork模式,并且调整了httpd.conf文件里面相应的ServerLimit, ListenBacklog,Maxclient等等值,Resin服务器调整Jvm heap size, 并行回收new generation和old generation, 最大线程数,oracle连接数等等参数,Solaris操作系统做了网络和系统的相应调整,最终把整套系统搬进了生产环境,一切顺利进行,但当进入其中的一个论坛系统时却发现系统响应时间非常缓慢,用Apache Benchmark Tool加少量压力得到结果如下,由于是在生产环境下所以不敢使用大的压力:
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking free.xxx.com (be patient).....done
Server Software: Resin/2.1.17
Server Hostname: free.xxx.com
Server Port: 8080
Document Path: /forum/bbsMessageList.act?bbsThreadId=1580107
Document Length: 27012 bytes
Concurrency Level: 10
Time taken for tests: 92.148883 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Keep-Alive requests: 0
Total transferred: 2722500 bytes
HTML transferred: 2701200 bytes
Requests per second: 1.09 [#/sec] (mean)
Time per request: 9214.888 [ms] (mean)
Time per request: 921.489 [ms] (mean, across all concurrent requests)
Transfer rate: 28.84 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 9089 9187 139.4 9140 9789
Waiting: 3067 3163 138.3 3117 3766
Total: 9089 9187 139.4 9140 9789
Percentage of the requests served within a certain time (ms)
50% 9140
66% 9178
75% 9189
80% 9201
90% 9281
95% 9560
98% 9739
99% 9789
100% 9789 (longest request)
每一个请求的响应时间大概去到8-9秒时间,这个是客户所不能接受的。
在实验的初段,Tomcat, 10g服务器都是架设在T2000上,我们在对T2000服务器的OS,网络,应用服务器做了必要的调整后,发现其表现还是不尽如人意。
相关推荐
8. **Java工具**:描述中提到的“怎么样是用java工具调错的的技巧”,这部分可能包括使用JDK自带的JConsole、JVisualVM、JProfiler等工具进行性能分析和调试,以及使用IDE(如Eclipse、IntelliJ IDEA)的调试功能。...
下面将详细介绍Eclipse开发工具及其相关的使用知识。 首先,Eclipse的核心特性包括代码编辑、调试、构建和版本控制集成,这使得它成为开发者们进行高效编程的首选工具。其代码编辑器具备丰富的语法高亮、自动补全和...
本教程将深入讲解MyEclipse的各项核心功能和使用技巧,帮助您提升开发效率。 一、MyEclipse基础 1. 安装与配置:首先,我们将详细介绍MyEclipse的下载途径,安装过程,以及如何进行系统配置,包括JDK的安装与设置...
学会使用IDE内置的调试器进行问题定位,能够帮助我们快速修复错误。 5. 测试框架:JUnit和Selenium等工具用于编写和运行单元测试和集成测试,确保代码质量。掌握测试驱动开发(TDD)的理念和实践,是提升软件可靠性...
本篇文章将详细讲解如何在不同的环境下设置调试环境,以及如何运用单步调试、断点调试和查看变量等关键技巧。 首先,让我们了解调试环境的建立。在开发过程中,我们需要一个强大的集成开发环境(IDE)或代码编辑器...
- **在模板中用 #foreach 指令支持迭代对象**: 详细解释了如何使用 Velocity 的内置指令 `#foreach` 来遍历集合或数组等数据结构。 - **Context Chaining 上下文链**: 介绍了如何在一个上下文中嵌套另一个上下文,以...
3. **异常处理**:Java中的异常处理机制是其强大之处,书中会讲解如何使用try-catch-finally语句块来捕获和处理运行时错误。 4. **集合框架**:Java集合框架是其库的重要组成部分,包括List、Set、Map接口及其实现...
在编译环节,作者指出GNU ARM Toolchain中并不自带make工具,但Eclipse可以使用其内置的make工具进行编译。如果遇到找不到make文件的问题,作者建议检查并设置CDT的Builder工具为CDT内部Builder,并重新编译。 最后...
由于描述为空,我们将基于常见的Android开发流程进行详细的讲解。 1. **Android Studio安装**: Android Studio是Google官方推荐的Android应用开发集成开发环境(IDE),它是基于IntelliJ IDEA的。首先,你需要从...
6. **API查询**:Eclipse内置的Java Development Tools(JDT)提供了强大的Java API浏览器,可以帮助开发者查阅JDK1.8的API文档,理解类库的功能和使用方法。 7. **插件管理**:Eclipse的插件系统使得用户可以安装...
这部分会讲解如何创建Web项目,配置Web服务器,以及使用内置的Tomcat服务器运行和调试应用。 7. **Java EE组件开发**:MyEclipse支持EJB、JMS、JPA等企业级组件,教程会介绍如何创建和配置这些组件,以及它们在实际...
本教程将详细讲解如何在EditPlus中配置环境,以便高效地编译和运行Java程序。 首先,我们需要确保已安装Java Development Kit (JDK),因为EditPlus依赖于JDK来编译和运行Java代码。安装完成后,我们需要在EditPlus...
这里我们详细讲解如何在SDK4.1版本下构建一个完整的Android开发环境,以便进行应用程序的编写和调试。 首先,我们需要下载Android SDK。Android SDK包含了开发Android应用所需的所有工具,包括编译器、模拟器以及...
手册会讲解如何配置数据库连接,并使用这些工具。 7. **Web开发**:涵盖JSP、Servlet、JSF等技术,包括页面设计、动态网页生成、HTTP请求处理等。还会介绍如何使用MyEclipse的Web工具进行开发和调试。 8. **框架...
4. **Java开发**:包括编写、调试Java代码,使用内置的代码提示和重构工具,以及如何进行单元测试和性能测试。 5. **Web应用开发**:涵盖HTML、CSS、JavaScript的编辑与调试,JSP、Servlet的开发,以及如何部署和...
5. **调试与测试**:讲解如何设置断点、单步执行、查看变量值,以及如何运行和调试单元测试,使用覆盖率工具等。 6. **构建与部署**:涵盖Maven或Gradle的集成,构建配置,打包应用,以及部署到各种服务器的步骤。 ...
教程会详细介绍这些组件的功能和使用方法,如创建、打开和保存项目,使用搜索功能,以及代码编辑器的高级特性。 4. **Java开发**:作为Eclipse的主要应用场景,Java开发部分将涵盖新建Java项目,编写、调试和运行...