使用JConsole实现JBoss性能监控
怎样远程监控Jboss

一、简言Java 6.x采用JMX方式提供了一系列监视和管理虚拟机的API,随SDK一起发布的JConsole则是采用这些API实现监控虚拟机的使用工具。
JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。
二、运行环境服务器:Redhat Linux ES 5.4 + JDK 1.6.07 + Jboss 4.2.2ip地址:192.168.100.86客户机:Windows + JDK 1.6.10三、参数配置1> 修改java虚拟机启动参数jboos需要修改的文件是在bin目录下的run.sh[Linux]或者run.bat[Windows]Config代码1.Linux下的修改方式:分以下两种方式(不需要身份认证与需要身份认证)A 不需要身份认证在%JBOSS_HOME%\bin\run.sh ($JBOSS_HOME=/home/jboss/jboss-5.1.0.GA) 文件中将JAVA_OPTS="$JAVA_OPTS =$PROGNAME "修改为:JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9999" #此端口可自定义JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" (如果jconsole连接时不需要身份认证,可加上这一句!)JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.100.86" #Server ipB,使用身份认证连接的方式a.新建一个目录保存密码文件mkdir $JAVA_HOME/jconsoleb. 将密码文件的模板复制到第一步创建的目录cp $JAVA_HOME/jre/lib/management/jmxremote.password.template$JAVA_HOME/jconsole/jmxremote.passwordc. 若需要,可以修改文件 $JAVA_HOME/jre/lib/management/jmxremote.access , 修改原来角色的权限,或新建角色,比如新建 myMonitorRole readonlyd. 在$JAVA_HOME/jconsole/jmxremote.password, 修改原角色的密码, 如把# monitorRole QED 前的注释去掉,并且把密码QED修改为你的密码.或为第3步新建的角色设置密码 -- 增加一行 myMonitorRole mypassword($JAVA_HOME/jre/lib/management/jmxremote.access (添加用户,并指定权限的角色,比如只读,或是可读可写)$JAVA_HOME/jconsole/jmxremote.password (设置上一步所加用户的密码)#JAVA_OPTS="$JAVA_OPTS =$PROGNAME" 带#号为注释的项JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9999"JAVA_OPTS="$JAVA_OPTS-Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jconsole/jmxremote.password "#JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.100.86"四,如果要监控的jboss为 Windows 服务器(我尚未测试)Config代码1.windows下的修改方式:2.rem -------- 增加jconsole监控---------------------------------------------------------------------------3.set JAVA_OPTS=%JAVA_OPTS% =%PROGNAME%4.set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=99995.set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.authenticate=false6.set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false7.set JAVA_OPTS=%JAVA_OPTS% -Djava.rmi.server.hostname=192.168.100.86注意:1、9999表示监控的端口号,确保指定的端口不被占用;2、可以采用netstat -an来查看已经占用的端口;3、配合lsof -i:portnum 来查看占用端口的具体应用程序;4、另外如果开启了防火墙服务,请确保端口能够透过防火墙访问;5、192.168.100.86为当前服务器的IP;五,重启动JBoss服务器./run.sh -b192.168.1.5,必须通过-b参数指定Jboss服务器绑定的地址;允许所有用户连接则为 -b 0.0.0.0nohup sh shutdown.sh –Sps -aux |grep jbossnohup sh run.sh -b 0.0.0.0 &六,如果无法连接有可能是linux服务器的hostname存在问题执行hostname -i ,如果显示的是127.0.0.1,则需要修改/etc/hosts文件vi /etc/hosts,修改如下:#127.0.0.1 localhost localhost.localdomain localhost服务器的真实IP地址 localhost localhost.localdomain localhost七. 在windows 端启动java程序Jconsole连接远程虚拟机启动%JAVA_HOME%\bin目录下的JConsole,在弹出对话框的“远程进程:”一栏中,输入192.168.100.86:9999,然后点击“连接”,就能查看到远程Jboss服务器的运行情况了。
jboss用法

JBoss是一个开源的应用服务器,主要用于Java应用。
以下是使用JBoss的一些基本步骤:
1. 安装和配置:首先,你需要下载并安装JBoss。
然后,创建一个配置文件来指定你想要在JBoss上运行的应用和环境变量。
2. 部署应用:将你的Java应用打包成WAR文件(Web Archive)或EAR文件(Enterprise Archive),然后将它们部署到JBoss。
你可以使用命令行工具或JBoss的管理界面来部署应用。
3. 启动和停止JBoss:使用命令行工具或管理界面来启动和停止JBoss。
如果你使用的是管理界面,你还可以监控应用的运行状态和性能。
4. 管理JBoss:通过管理界面,你可以管理JBoss的各种设置、查看日志文件、监控性能等。
5. 扩展JBoss:JBoss有许多可扩展的模块和插件,你可以根据需要安装它们来增强JBoss的功能。
在使用JBoss时,你需要注意一些事项。
例如,确保你的Java 应用使用了JBoss支持的Java版本和EE规范。
此外,你也需要注意JBoss的内存限制和线程数限制,以确保你的应用不会遇到性能问题。
使用JConsole实现JBoss性能监控

jconsole功能简介jconsole是JDK5开始自带的基于GUI的JVM监控工具,可以监控内存、线程、jvm堆栈、执行GC等,不仅可以对本机JVM进行监控,也可用于远程主机的JVM。
下面就来说一下在JBOSS运行环境下如何使用jconsole进行监控。
首先,配置jboss启动参数,jboss4.2x中,可以打开run.bat文件。
set JA V A_OPTS=%JA V A_OPTS% -Djava.rmi.server.hostname=10.5.35.151 -Dcom.sun.management.jmxremote.port=8950-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=fals其中:-Djava.rmi.server.hostname=10.5.35.151 设置访问的主机地址-Dcom.sun.management.jmxremote.port=8950 设置端口-Dcom.sun.management.jmxremote.authenticate=false 不需要认证-Dcom.sun.management.jmxremote.ssl=false 不需要SSL如果需要设置用户名和密码,则-Dcom.sun.management.jmxremote.authenticate=true同时还要设置密码文件-Dcom.sun.management.jmxremote.password.file=$JA V A_HOME/jre/lib/management/j mxremote.password在jmxremote.password文件中增加用户名密码即可。
然后双击run.bat ,启动jboss.在客户端机器上键入:cmd-> jconsole 10.5.35.151:8950,之后就会出现监控控制台,如下图:这里有六个tab页,分别对内存、线程、类等都有监控,非常方便。
jconsole工具使用

jconsole⼯具使⽤Jconsole,Java Monitoring and Management Console。
是JDK⾃带的⼯具,在JDK/bin⽬录下可以找到。
它⽤于连接正在运⾏的本地或者远程的,对运⾏在应⽤程序的资源消耗和性能进⾏监控,并画出⼤量的图表,提供强⼤的可视化界⾯。
⽽且本⾝占⽤的服务器内存很⼩,甚⾄可以说⼏乎不消耗。
⼀、介绍JConsole 是⼀个内置 Java 性能分析器,可以从命令⾏(直接输⼊jconsole)或在 GUI shell (jdk\bin下打开)中运⾏。
它⽤于对JVM中内存,线程和类等的监控。
可使⽤JTop插件。
它可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控⼏个jvm。
这款⼯具的好处在于,占⽤系统资源少,⽽且结合Jstat,可以有效监控到java内存的变动情况,以及引起变动的原因。
在项⽬追踪内存泄露问题时,很实⽤。
使⽤ JConsole 进⾏⼯作分析器有⾃⼰的开销,因此最好的办法就是花点时间来弄清是什么开销。
发现 JConsole 开销最简单的办法是,⾸先独⾃运⾏⼀个应⽤程序,然后在分析器下运⾏,并测量差异。
(应⽤程序不能太⼤或者太⼩;我最喜欢使⽤ JDK 附带的 SwingSet2 样本。
)因此,我使⽤-verbose:gc尝试运⾏ SwingSet2 来查看垃圾收集清理,然后运⾏同⼀个应⽤程序并将 JConsole 分析器连接到它。
当 JConsole 连接好了之后,⼀个稳定的 GC 清理流出现,否则不会出现。
这就是分析器的性能开销。
远程监控⼆、远程监控⼆、因为 Web 应⽤程序分析⼯具假设通过⼀个套接字进⾏连通性分析,只需要进⾏少许配置来设置 JConsole(或者是基于 JVMTI 的分析器,就这点⽽⾔),监控/分析远程运⾏的应⽤程序。
远程监控与本地监控配置类似,这⾥以监控远程为例。
1、监控tomcat服务器端:详细步骤如下所⽰:1、修改Tomcat的bin⽬录下的catalina.bat⽂件vi catalina.sh找到# OS specific support. $var _must_ be set to either true or false.添加如下变量:JAVA_OPTS="${JAVA_OPTS} -Djava.rmi.server.hostname=192.168.56.253-Dcom.sun.management.jmxremote.port=9999-Dcom.sun.management.jmxremote.authenticate=true-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.acccess.file=/usr/local/tomcat/bin/jconsole/jmxremote.access-Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat/bin/jconsole/jmxremote.password"注意:这⾥是⼀⾏,空格不合适可能会启动不了服务。
使用JCONSOLE远程监控JVM_服务器详细配置

使用JCONSOLE远程监控JVM_服务器详细配置使用JCONSOLE远程监控JVM_服务器详细配置1、确保WLS使用Sun JDK,java -version2、修改WLS配置文件windows修改E:\bea\user_projects\domains\base_domainJMX\bin\setDomainEnv.cmd 添加set MEM_ARGS=-Xms512m -Xmx768m -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false"-Dcom.sun.management.jmxremote.ssl="false"LINUX修改$Domain_HOME/bin/setDomainEnv.sh,为$JAVA_OPTIONS添加-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false3、解决jconsole远程登录用户名密码问题$JAVA_HOME\jre\lib\management目录有个jmxremote.password.template,在最下面两行就可以看到,把前面的#号去掉就生效了weblogic weblogic(用户名密码,可以随意修改)controlRole weblogic(用户名密码,可以随意修改)4、编辑host文件vi /etc/hosts添加#127.0.0.1 localhost localhost.localdomain localhost(先注释)jconsole要访问的ip地址 localhost localhost.localdomain localhost(然后添加这一行)使用hostname -i查看,返回的应该是jconsole要访问的ip地址,也就是weblogic机器的真实IP地址5、启动./$Domain_HOME/bin/startweblogic.sh6、查看9004端口是否启动netstat -an | grep 90047、在本地jdk/bin目录下启动JCONSOLE程序,在窗口中选择“远程”选项卡,输入IP地址端口号:jconsole要访问的ip地址:9004,用户名/密码:weblogic/weblogic。
性能测试常用监控工具简介

一、 LINUX监控工具--NMON
NMON简介
● Nmon是一种在Aix与Linux操作系统上 广泛使用的监控与分析工具
● Nmon所记录的信息非常全面 ● Nmon可以产生数据文件与图形化结果
NMON监控内容
● cpu占用率 ● 内存使用情况 ● 磁盘I/O速度、传输和读写比率 ● 文件系统的使用率 ● 网络I/O速度、传输和读写比率、错误统计率与传输包的大小 ● 消耗资源最多的进程 ● 计算机详细信息和资源 ● 页面空间和页面I/O速度 ● 用户自定义的磁盘组 ● 网络文件系统
Spotlight on oracle监控top session
TopSessions面板可以查看当前哪个session当前占用了大量的资源;单 击session列表,会在session Information中显示该会话的所有详细信息 ,可以查看执行计划,判断是否存在全表扫描
Spotlight on oracle监控top sql
● 举例:./nmon –F test.nmon –s 5 –c 1000
NMON生成数据文件
● nmon analyser生成数据文件 ● 需要将nmon analyser的宏安全模式调至低
NMON数据文件分析
NMON数据文件分析
主要关注TAB: ● SYSSUM ● CPU_ALL ● CPU_SUMM ● DISK_SUMM ● DISKBUSY ● MEM ● NET
Jconsole启动
服务器端启动:
在catalina.sh的JAVA_OPTS参数中添加-Djava.awt.headless=true 在Xshell的参数选项中,将X11连接选中:
Jconsole启动
远程连接:
使用Jconsole对java的内存使用情况(JVM)进行监控

JDK1.5提供JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以执行MBean公开的方法或强制进行垃圾回收。
因为Apusic应用服务器实现标准的JMX接口,因此也可以使用Jconsole 进行监控。
下面是在windows端对Linux的java应用(Resin)的JVM进行监控。
windows:安装jdk1.6.0_06 /javase/downloads/index.jspLinux:Resin2.1.x + jdk1.6启动resin ,增加jvm监控的指令:可以在java启动参数添加,如:httpd.sh 或者wrapper.pl 里面vi http.shargs="***" 把需要启动jvm选项加入。
#指定远程服务器的端口-Dcom.sun.management.jmxremote.port=12345#指定远程服务器的用户认证-Dcom.sun.management.jmxremote.password.file=$JRE_HOME/lib/management/password. properties-Dcom.sun.management.jmxremote.access.file=$JRE_HOME/lib/management/access.prope rties使用密码:#JRE_HOME/lib/management/jmxremote.password.templatecp jmxremote.password.template password.propertieschmod 600 password.properties#默认用户名密码为:monitorRole QEDcontrolRole R&D#默认权限#cp jmxremote.access access.properties#设置权限monitorRole readonlycontrolRole readwrite#也可以使用禁止用户认证com.sun.management.jmxremote.authenticate=false也可以使用ssl连接这里先不用com.sun.management.jmxremote.ssl=false说明:如果没有启动com.sun.management.jmxremote 的配置,远程连接会提示:error during jrmp connection establishment ; nested exception is如果无法连接有可能是linux服务器的hostname存在问题#修改hostname/etc/hosts 把127.0.0.1修改为外网卡IP,如192.168.1.100还有/etc/sysconfig/network#启动resin$RESIN_HOME/bin/http.sh start#查看是否已经启动#ps -x8681 pts/0 S 0:00 perl bin/wrapper.pl -chdir -name httpd -classcom.caucho.server.http.HttpServer -J-server -verbose -Dcom.8683 pts/0 Sl 0:04 /home//jdk1.6.0_06/bin/java -server-Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremo #查看端口#netstat -antcp 0 0 127.0.0.1:35844 127.0.0.1:35848 ESTABLISHEDtcp 0 0 :::8080 :::* LISTENtcp 0 0 :::12345 :::* LISTEN-Dcom.sun.management.jmxremote.authenticate=false#是否使用ssl-Dcom.sun.management.jmxremote.ssl=false"windows下jconsole命令在$JAVA_HOME/bin 下cmd:\>jconsole#启动连接远程192.168.1.100:12345 controlRole R&D。
JVM优化配置——使用JConsole性能调优

JAVA开发我们常常会遇到内存分配和性能调优方面的要求,在新能调优方面没有固定的最优方案,这就需要我们去根据实际情况分析,然后给出最适合的方案。
因此利用JConsole可以很方便进行观察。
一、被控端配置要运行JConsole,需要首先被监控端要进行相应的配置,我们要在被控制端启动JAVA 程序时补充上如下代码:-Dcom.sun.management.jmxremote //这里指定启动JMX-Dcom.sun.management.jmxremote.port=8061 //这里是指定端口号-Dcom.sun.management.jmxremote.ssl=false //这里指定是否使用SSL进行通讯加密-Dcom.sun.management.jmxremote.authenticate=false //这里指定是否使用证书如果我们需要启用远程用户身份认证(用户名和密码),则可以加入下面的参数:-Dcom.sun.management.jmxremote.authenticate=true-Dcom.sun.management.jmxremote.password.file=$JRE_HOME/lib/management/p assword.properties //这里指定你放置的password.properties 文件的路径-Dcom.sun.management.jmxremote.access.file=$JRE_HOME/lib/management/acce ss.properties 这里指定你放置的access.properties文件的路径这里的password.properties 和access.properties文件可以从JRE_HOME/lib/management/目录下去复制jmxremote.password.template文件到指定目录下,并将其改名为password.properties 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jconsole功能简介jconsole是JDK5开始自带的基于GUI的JVM监控工具,可以监控内存、线程、jvm堆栈、执行GC等,不仅可以对本机JVM进行监控,也可用于远程主机的JVM。
下面就来说一下在JBOSS运行环境下如何使用jconsole进行监控。
首先,配置jboss启动参数,jboss4.2x中,可以打开run.bat文件。
set JA V A_OPTS=%JA V A_OPTS% -Djava.rmi.server.hostname=10.5.35.151 -Dcom.sun.management.jmxremote.port=8950-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=fals其中:-Djava.rmi.server.hostname=10.5.35.151 设置访问的主机地址-Dcom.sun.management.jmxremote.port=8950 设置端口-Dcom.sun.management.jmxremote.authenticate=false 不需要认证-Dcom.sun.management.jmxremote.ssl=false 不需要SSL如果需要设置用户名和密码,则-Dcom.sun.management.jmxremote.authenticate=true同时还要设置密码文件-Dcom.sun.management.jmxremote.password.file=$JA V A_HOME/jre/lib/management/j mxremote.password在jmxremote.password文件中增加用户名密码即可。
然后双击run.bat ,启动jboss.在客户端机器上键入:cmd-> jconsole 10.5.35.151:8950,之后就会出现监控控制台,如下图:这里有六个tab页,分别对内存、线程、类等都有监控,非常方便。
一般情况下,使用这种方式观察内存使用情况,线程是否有死锁等等。
系统设置1.首先什么都不用装哦,只要你本机有jdk;2.echo $JA V A_HOME,找出java安装路径;3.自己寻觅一个路径mkdir jcon_pwd,我们暂时命名为$your_path/jcon_pwd;4.执行cp $JA V A_HOME/jre/lib/management/jmxremote.pwd.template$your_path/jcon_pwd/jmxremote.pwd;5.vi jmxremote.pwd,修改monitorRole *****(your password);6.在env.sh文件中的JA V A_OPTS参数中,加入:-Dcom.sun.management.jmxremote.port=9999-Dcom.sun.management.jmxremote.pwd.file=/home/zhao/brmms/deploy/bin/jcon_pwd/jmxremot e.pwd -Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false注意port=9999,要是一个没有人使用的端口。
7.执行hostname -i ,如果显示的是127.0.0.1,需要修改/etc/hosts文件#127.0.0.1 localhost localhost.localdomain localhost<server ip> localhost localhost.localdomain localhost8. 检查vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=主机名//在这里可以修改主机名9.启动jboss server,./startws.sh -d<serverip>stat -na|grep <listenport>, 如netstat -na |grep 9999 查看后为listen状态;11.打开客户端%JA V A_HOME%/bin,双击打开jconsole.exe12.指定连接参数:远程主机: 服务器的真实IP地址端口: port($JA V A_OPTIONS中-Dcom.sun.management.jmxremote.port指定的端口)用户名:monitorRole密码:your password(jmxremote.pwd中设置的密码)13. 点击“连接”访问方式1.Local方式1、cmd进入dos下,进入到应用程序所在目录,执行语句如下:java -Dcom.sun.management.jmxremote -jar 程序名.jar(java -Dcom.sun.management.jmxremote -jar Java2Demo.jar)(测试例子Java2Demo.jar在C:\Program Files\Java\jdk1.6.0_02\demo\jfc\Java2D\)还出不来的话直接在dos里jconsole 进程号2、启动jdk_home\bin目录下的Jconsole.exe就可以看到有一个本地的连接在里面。
点击连接就可以进入相应的监视界面了。
2.JMX方式(远程连接)1、cmd进入dos下,进入到应用程序所在目录,执行语句如下:java -Dcom.sun.management.jmxremote.port=8903 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false-Djava.rmi.server.hostname=192.168.***.***2、启动jdk_home\bin目录下的Jconsole.exe点高级。
在JMX URL:中输入语句如下:service:jmx:rmi:///jndi/rmi://192.168.***.***:8903/jmxr mi点连接就可以进行远程监控了web应用程序在tomcat中部署JMX(示例:tomcat-6.0.14)1、启动tomcat\bin目录下的tomcat6w.exe,在JA V A_OPTS里设置如下:-Dcom.sun.management.jmxremote.port=8903-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false-Djava.rmi.server.hostname=192.168.***.***注意:不能有空格,不然tomcat不能启动。
2、tomcat启动成功后,就可以在另一台机器上启动jdk_home\bin目录下的Jconsole.exe点高级。
在JMX URL:中输入语句如下:service:jmx:rmi:///jndi/rmi://192.168.***.***:8903/jmxrmi点连接就可以进行远程监控了以上是JMX基本部署,没有涉及到验证方面,如果使用的话,可能会有漏洞,因为SSL和authenticate设置为false的话,那么8903端口就有可能有暴露的危险。
我自己的应用:1.修改Linux下tomcat的bin目录下的catalina.sh文件添加JA V A_OPTS=-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.port=7080-Dcom.sun.management.jmxremote2.修改/etc/hosts文件下的localhost对应的IP(127.0.0.1)地址,改为linux自身的IP如10.0.0.1573.打开jconsole远程输入10.0.0.157:70803.高级使用一个特殊的URL连接JMX代理。
一般情况使用自己定制的连接器而不是RMI提供的连接器来连接JMX代理,或者是一个使用JDK1.4的实现了JMX和JMX Rmote的应用。
当JConsole成功建立连接,它从连接上的JMX代理处获取信息,并且以下面几个标签页呈现信息:Eden Space (heap):内存最初从这个线程池分配给大部分对象。
Survivor Space (heap):用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
Tenured Generation (heap):用于保持已经在survivor space内存池中存在了一段时间的对象。
Permanent Generation (non-heap): 保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。
Java虚拟机共享这些类数据。
这个区域被分割为只读的和只写的,Code Cache (non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)应用监控jconsole 可以很方便的监控本机的所有Java 应用和远程应用.监控本地应用首先就是启动您要监控的应用,例如我用JDK 1.6 来启动了Tomcat,或者Eclipse 也可以,可以在任务管理器(Ctrl+Alt+Del可以调出来,或者在任务栏点击右键)里看到进程ID,例如我这里是6132。
接着在JDK 安装目录中(<JDK_HOME>/bin/jconsole.exe)启动jconsole.exe (双击或者在cmd 里面敲入jconsole),主界面会提示您建立一个新连接:可以看到进程ID,选择它,然后点击"连接". 这些ID 必须都是用JDK 1.6 的java.exe 启动的,否则在列表里看不到。
JConsle 能监控内存,线程,类的数目和CPU然后点击各个Tab 可以看到详细的输出,详细的输出包括:内存: 堆/非堆,峰值,内存的各个部分,例如Perm,Eden 等的大小曲线图.线程: 峰值,所有线程的列表,堆栈跟踪(哪个对象中的线程)等. 还可以强制执行GC。