(一):通过【 top -p 12377 -H】 查看java进程的有哪些线程的运行情况;
和通过【jstack 12377 >stack.log】生成Java线程的dump详细信息;
先用top命令找出占用资源厉害的java进程id,如图:# top
如上图所示,java的进程id为’52554′,接下来用top命令单独对这个进程中的所有线程作监视:
1top -p 52554 -H
# top视图里面里面可以通过快捷键依次b ,x高亮显示top的列找出需要的线程,默认CPU排序,Sh
java 的WatchService 类提供了一种方式可以检查try
{
WatchService watchService = FileSystems.getDefault()
.newWatchService()
Path path = Paths.get(pathName)
// 注册监听器
path.register(watchService,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE)
while (true)
{
// 阻塞方式,消费文件更改事件
List<WatchEvent<?>>watchEvents = watchService.take()
.pollEvents()
for (WatchEvent<?>watchEvent : watchEvents)
{
System.out.printf("[%s]文件发生了[%s]事件。%n", watchEvent
.context(), watchEvent.kind())
}
}
}
catch (Exception e)
{
}
对于远程监控Linux主机系统CPU,内存使用情况,以前也使用了top等命令,但是最后还是觉得使用vmstat比较好.运行top命令获得系统CPU使用情况有两个缺点,
第一运行top命令,执行的shell语句相对复杂.
用top命令获得CPU使用情况的shell语句
top -b -n 2 | grep Cpu |sed 1d | awk '{print $5}' | cut -f 1 -d "."
第二:有时候系统峰值时间很短暂,容易造成误判.
注意:运行本例子,你还需要下载第三方ganymed-ssh2-build251beta1.jar,改软件主要用于通过ssh远程登录被监控主机.
ITjob上。看。的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)