使用Java自带的jvisualvm调试Java程序,可以查看CPU、内存、类及线程等信息,还可以进行Dump,无疑是一个利器

由于客户端是Windows、服务端是Linux,并且是最小安装的Linux,没有图形界面,因此需要进行远程调试

一、客户端:Windows

打开%JAVA_HOME%/bin/jvisualvm.exe,在“远程”节点,右键,“添加远程主机”,如下所示:

输入主机IP地址,修改显示名,点击确定,如下所示:

二、服务端:Linux

在$JAVA_HOME/bin/下新建策略文件:

[teld@T-SHA1-FLK- bin]$ touch jstatd.all.policy
[teld@T-SHA1-FLK- bin]$ vi jstatd.all.policy

输入如下内容:

grant codebase "file:/usr/java/default/lib/tools.jar" {
permission java.security.AllPermission;
};

启动jstatd:

[teld@T-SHA1-FLK- bin]$./jstatd -J-Djava.security.policy=./jstatd.all.policy

这时在客户端即可看到服务端上运行的所有Java程序了,如下所示:

双击某一个Java程序节点,可以看具体的CPU、内存、类及线程信息

三、遇到的坑

3.1 插件安装

jvisualvm可以安装插件,但是使用时,发现默认的插件提供网站已经不能用了:

通过浏览器直接访问,发现网站已经不能用了:

http://www.oracle.com/splash/java.net/maintenance/index.html

新地址已经迁移到github:

https://visualvm.github.io/pluginscenters.html

根据版本下载对应的插件到本地,然后通过本地安装即可,以安装Visual GC为例,如下所示:

安装完后,可以发现多了一个Visual GC的Tab页:

可以很直观的观察JVM里的内存分配

3.2 CPU查看、抓取Dump

使用这种远程的方式,没法查看CPU、没法抓取Dump,因此局限性很大,还是应该使用本地的方式比较稳妥

使用jvisualvm的jstatd方式远程监控Java程序的更多相关文章

  1. Jstatd方式远程监控Linux下 JVM运行情况

    前言 最近一个项目部署在服务器上运行时出现了问题,经过排查发现是java内存溢出的问题,所以为了实时监控服务器java内存的情况,需要远程查看服务器上JVM内存的一些情况.另外服务器系统是CentOS ...

  2. 使用jvisualvm远程监控Java程序

    使用Java自带的jvisualvm调试Java程序,可以查看CPU.内存.线程等信息,还可以进行Dump,无疑是一个利器 由于客户端是Windows.服务端是Linux,并且是最小安装的Linux, ...

  3. VisualVM通过jstatd方式远程监控远程主机

    配置好权限文件 [root@test bin]# cd $JAVA_HOME/bin [root@test bin]# vim jstatd.all.policy grant codebase &qu ...

  4. 使用jvisualvm来远程观察Java程序及jvisualvm插件[转]

    jvisualvm是JDK自带的监控JVM运行状况的工具,利用jvisualvm可以查看JVM的运行.GC情况:线程的运行情况:内存中类及实例的情况等. 使用jvisualvm来远程观察Java程序, ...

  5. 利用VisualVm和JMX远程监控Java进程

    自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...

  6. eclipse远程debug Java程序

    使用Eclipse JPDA远程调试Java程序 本文将介绍使用Eclipse JPDA,在Eclipse的开发环境下对远程运行的Java程序进行调试操作. 请按以下步骤进行(本人已经在Eclipse ...

  7. VisualVM远程监控Java

    1.服务器启动jstatd服务设置: jstatd将使用RMISecurityPolicy,并且需要指定安全策略文件. 安全策略文件必须符合安全策略语法,通过命令 jstatd -J-Djava.se ...

  8. zabbix 监控java程序

    http://www.tuicool.com/articles/IRnM7f http://transcoder.baidu.com/from=1012852q/bd_page_type=1/ssid ...

  9. 使用jvisualvm.exe 的Btrace插件监控应用程序

    之前提到使用命令行的方式执行btrace监控,其实jdk提供更好的方式监控应用程序. 我们可以使用jvisualvm.exe加插件的方式监控,这样更加方便. 1.在jvisualvm.exe安装btr ...

随机推荐

  1. 屏蔽百度及其广告的部分Host

    127.0.0.44 www.baidu.com127.0.0.44 cpro.baidu.com127.0.0.44 hm.baidu.com127.0.0.44 bdimg.share.baidu ...

  2. (转)Python - 字符串对齐

    https://zhuanlan.zhihu.com/p/33923344-----------Python小知识:用format格式化输出字符串 版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  3. 查看LINUX 系统硬件等详细信息

    转载这位朋友[地址] 几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) mor ...

  4. Chapter 3 Phenomenon——8

    I turned to sit up, and this time he let me, releasing his hold around my waist and sliding as far f ...

  5. 恶性bug解决,Encoding 1252 data could not be found. Make sure you have correct international codeset assembly installed and enabled

    百度是没有的,google了下 这句话的意思是编码1252没找到,确保程序及是国际化格式 发生在我使用unity读取xlsx文件,在编辑器运行正常,但是发布出来不正常,报错 解决方案: 链接:http ...

  6. 关于EJB,为什么用EJB?为什么不用EJB?

    http://blog.csdn.net/linxi1209163com/article/details/51029890 一:什么是EJB 官方说法,就是企业级是基于语言的服务器框架技术,通过我们可 ...

  7. [PY3]——对iterator的处理(解析式、map、reduce、filter)

    引言 对iterator一般可以用for in方法处理,但有时可以借助更高效.也更易读的方式去处理. 例如解析式(包括列表解析式.生成器解析式.集合解析式.字典解析式), 例如map( ).reduc ...

  8. UIKit 框架之UITableView二

    // // ViewController.m // UITableView // // Created by City--Online on 15/5/21. // Copyright (c) 201 ...

  9. [转]How to log queries using Entity Framework 7?

    本文转自:https://stackoverflow.com/questions/26747837/how-to-log-queries-using-entity-framework-7

  10. dev中ASPxListBox单选和多选的设置

    只需要设置SelectionMode,为Multiple时是单选,CheckColumn时是多选