jstatd
启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099。
实例:jstatd -J-Djava.security.policy=my.policy
my.policy文件需要自己建立,内如如下:
grant codebase "file:$JAVA_HOME/lib/tools.jar" {
permission java.security.AllPermission;
};
这是安全策略文件,因为jdk对jvm做了jaas的安全检测,所以我们必须设置一些策略,使得jstatd被允许作网络操作
jps
列出所有的jvm实例
实例:
jps
列出本机所有的jvm实例
jps 192.168.0.77
列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为1099
(前提是远程服务器提供jstatd服务)
输出内容如下:
jones@jones:~/data/ebook/java/j2se/jdk_gc$ jps
6286 Jps
6174 Jstat
jconsole
一个图形化界面,可以观察到java进程的gc,class,内存等信息。虽然比较直观,但是个人还是比较倾向于使用jstat命令(在最后一部分会对jstat作详细的介绍)。
jinfo(linux下特有)
观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数
实例:jinfo 2083
其中2083就是java进程id号,可以用jps得到这个id号。
输出内容太多了,不在这里一一列举,大家可以自己尝试这个命令。
jstack(linux下特有)
可以观察到jvm中当前所有线程的运行情况和线程当前状态
jstack 2083
输出内容如下:
jmap(linux下特有,也是很常用的一个命令)
观察运行中的jvm物理内存的占用情况。
参数如下:
-heap:打印jvm heap的情况
-histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
-histo:live :同上,但是只答应存活对象的情况
-permstat:打印permanent generation heap情况
命令使用:
jmap -heap 2083
可以观察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况
输出内容:
jmap -histo 2083 | jmap -histo:live 2083
可以观察heap中所有对象的情况(heap中所有生存的对象的情况)。包括对象数量和所占空间大小。
输出内容:
写个脚本,可以很快把占用heap最大的对象找出来,对付内存泄漏特别有效。
jstat
最后要重点介绍下这个命令。
这是jdk命令中比较重要,也是相当实用的一个命令,可以观察到classloader,compiler,gc相关信息
具体参数如下:
-class:统计class loader行为信息
-compile:统计编译行为信息
-gc:统计jdk gc时heap信息
-gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况
-gccause:统计gc的情况,(同-gcutil)和引起gc的事件
-gcnew:统计gc时,新生代的情况
-gcnewcapacity:统计gc时,新生代heap容量
-gcold:统计gc时,老年区的情况
-gcoldcapacity:统计gc时,老年区heap容量
-gcpermcapacity:统计gc时,permanent区heap容量
-gcutil:统计gc时,heap情况
-printcompilation:不知道干什么的,一直没用过。
一般比较常用的几个参数是:
jstat -class 2083 1000 10 (每隔1秒监控一次,一共做10次)
输出内容含义如下:
Loaded | Number of classes loaded. |
Bytes | Number of Kbytes loaded. |
Unloaded | Number of classes unloaded. |
Bytes | Number of Kbytes unloaded. |
Time | Time spent performing class load and unload operations. |
jstat -gc 2083 2000 20(每隔2秒监控一次,共做10)
输出内容含义如下:
S0C | Current survivor(存活的) space 0 capacity (KB). |
EC | Current eden space capacity (KB). |
EU | Eden space utilization (KB). |
OC | Current old space capacity (KB). |
OU | Old space utilization (KB). |
PC | Current permanent space capacity (KB). |
PU | Permanent space utilization (KB). |
YGC | Number of young generation GC Events. |
YGCT | Young generation garbage collection time. |
FGC | Number of full GC events. |
FGCT | Full garbage collection time. |
GCT | Total garbage collection time. |
输出内容:
监控内存使用情况 参数 (查看内存溢出相对有用)
jstat -gccause 2083 5000 (每隔5秒监控一次)
输出内容含义如下:
S0 | Survivor space 0 utilization as a percentage of the space's current capacity. |
S1 | Survivor space 1 utilization as a percentage of the space's current capacity. |
E | Eden space utilization as a percentage of the space's current capacity. |
O | Old space utilization as a percentage of the space's current capacity. |
P | Permanent space utilization as a percentage of the space's current capacity. |
YGC | Number of young generation GC events. |
YGCT | Young generation garbage collection time. |
FGC | Number of full GC events. |
FGCT | Full garbage collection time. |
GCT | Total garbage collection time. |
LGCC | Cause of last Garbage Collection. |
GCC | Cause of current Garbage Collection. |
如果能熟练运用这些命令,尤其是在linux下,那么完全可以代替jprofile等监控工具了,谁让它收费呢。呵呵。
用命令的好处就是速度快,并且辅助于其他命令,比如grep gawk sed等,可以组装多种符合自己需求的工具。
相关推荐
本文将介绍C语言中几种常见的输出调试信息的方法。 首先,我们来看一个示例代码片段,这段代码展示了如何自定义宏来实现不同类型的调试输出: 1. `DEBUG_LINE()` 宏用于打印当前源文件、函数名和行号,方便追踪...
以下是几种常见原因及对应的解决方案: 1. **文件系统配置不当**:如`/etc/inittab`或`/etc/fstab`配置错误,可通过修复或恢复备份来解决。 2. **非法关机导致根分区损坏**:使用救援模式修复根文件系统,或利用...
- **知识点**:vi编辑器是一种强大的文本编辑器,在命令模式下可以执行编辑指令,而在输入模式下则可以进行文本的插入和编辑。 #### 27. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四...
【标题】"Tomcat 8.5.24 for Linux CSDN 下载"涉及到的知识点包括以下几个方面: 1. **Tomcat服务器**: Tomcat是一个由Apache软件基金会开发的开源Java Servlet容器,它实现了Java EE的Web应用程序部署规范。Tomcat...
根据提供的文件信息,本文将详细解释Linux中常用的几种查看日志的方法及命令,并结合实例进行说明。 ### 一、Linux查看日志的基本方法 在Linux系统中,日志文件是系统管理和故障排查的重要依据之一。通常,日志...
10. **调试与维护**:介绍常用的Linux命令行工具,以及远程调试和故障排查技巧。 通过学习这本书,读者不仅能掌握ARM/Linux开发的基本技能,还能了解到如何将这些知识应用于实际项目中。对于希望进入嵌入式Linux...
本教程可能侧重于某一种或几种常见发行版。 3. **Linux shell**:shell是Linux的命令行界面,允许用户通过输入指令来执行任务。bash(Bourne-Again SHell)是最常见的shell,也是本教程的重点。 4. **基本Linux...
5. **故障排查**:Sigar还可以帮助诊断系统问题,比如查找内存泄漏、分析CPU负载过高或网络连接异常的原因。 6. **示例和文档**:为了便于理解和使用,Sigar项目通常会提供丰富的示例代码和详细的文档,帮助开发者...
在Linux2.6内核环境下,Makefile的编写需特别注意以下几点: 1. **模块格式**:与早期版本不同,Linux2.6内核下的模块格式由`.o`改为`.ko`,这有助于模块接口的标准化,便于设备的控制和管理。 2. **调试信息**:...
Shell脚本是Linux下进行自动化任务的常用工具,通过编写简单的命令行指令,可以实现定期执行特定任务的功能。在这个"shell脚本定时清理linux清理内存脚本"中,可能包含以下几类操作: 1. **显示内存状态**:使用`...
关于进程处理,文档提到了几个关键指令,如pgrep用于根据名称查找进程,killall根据名字结束所有进程,nohup确保命令在后台持续运行,即使用户注销也不会受影响。这些命令对于日常系统维护和故障排查至关重要。 总...
在Linux环境下,管理和操作Oracle数据库涉及一系列的命令行指令,这对于数据库管理员和运维人员来说是必不可少的技能。本文将详细讲解这些命令以及Oracle数据库的启动和关闭方法。 首先,要进入Linux系统并打开终端...
Linux是一种自由开放源代码的操作系统,其内核由Linus Torvalds于1991年首次发布,并逐渐发展成为全球范围内广泛使用的操作系统之一。Linux系统的启动过程非常复杂,涉及到多个阶段和技术细节,对于初学者来说,了解...
Redis是一款高性能的键值存储系统,它被广泛用于数据库、缓存和消息中间件等场景。Redis-5.0.10是Redis的一个稳定版本,...在实际应用中,你还需要关注Redis的监控、性能调优和问题排查,确保系统的稳定性和高效运行。
了解Linux系统管理涉及以下几个方面: - 文件和目录操作:包括创建、删除、移动、复制、权限设置等。 - 进程管理:启动、终止进程,查看进程状态,以及进程间通信。 - 系统服务管理:通过`systemd`或`init`系统...
Linux系统服务控制是操作系统管理的核心部分,它负责启动、停止以及监控系统中的各种服务。这份12页的PDF文档很可能是对Linux系统服务控制的详细教程,涵盖了如何配置、管理和优化这些服务。在这个主题中,我们可以...
在Linux平台上实现GPRS模块的PPP拨号上网,通常有以下几种方法: ###### 方法一:使用`wvdial` - **简介**:`wvdial`是基于`pppd`的一个图形界面工具,它可以简化PPP连接的配置过程。 - **使用方法**:安装`wvdial`...