使用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. 【GDKOI2016】 魔卡少女 线段树

    题目大意:给你一个长度为n的序列${a_1....a_n}$,有$m$次操作 每次操作有两种情况:修改$a_i$的值,询问$[l,r]$中所有子区间的异或和. 数据范围:$n,m≤10^5$,$a_i ...

  2. 搜索类网站记录 && 代理服务器

    搜索类网站记录 && 代理服务器 技巧 1.使用site   我们在搜索的时候,其实不全依赖搜索引擎也是可以的, 比如我们要搜索一个 “中国” ,可以在搜索框输入   中国  site ...

  3. 安卓开发——ListView控件(初始化ListView、列表刷新、长按添加menu)

    前言: ListView——列表,它作为一个非常重要的显示方式,不管是在Web中还是移动平台中,都是一个非常好的.不开或缺的展示信息的工具.在Android中,ListView控件接管了这一重担,在大 ...

  4. 我与GitHub的第一次——自制音乐文件修改器

    背景: 随机播放,所有的音乐播放器里面现在几乎都有这个功能吧.但是有没有发现,自己的播放器在选择随机播放的时候,经常会听到重复顺序的歌曲呢?反正我是有这样的感觉,无耐自己平时下的歌曲都是“歌手名—歌曲 ...

  5. 微服务Kong(十)——负载均衡参考

    KONG为请求多个后端服务提供了多种负载均衡方案:一种是简单的基于DNS,另一种是更加动态的环形均衡器,他在不需要DNS服务器的情况下也允许服务注册. 一.基于DNS的负载均衡 当使用基于DNS的负载 ...

  6. Linux下安装了Xampp,但命令行使用不了MySQL

    引用:http://www.2cto.com/database/201406/309521.html   刚安装好Xampp,使用localhost也能正常运行, phpMyAdimin也能正常登录 ...

  7. leetcode 98,判断二叉树为BST

    方法一,记录子树的上界和下界,root的左子树一定小于root的值,root的右子树一定大于root的值,然后递归左子树和右子树 public class Solution { public bool ...

  8. SharePoint 2013创建应用程序时IIS端口文件夹下没文件

    最近SharePoint 2007迁移到2013的时候,碰到创建应用程序时IIS端口文件夹下没文件的问题,网上找了大把的原因,终于在这里找到了解决方案: Fix: 1. Open IIS on the ...

  9. SpringMVC 之 Hello World 入门

    1 准备开发环境和运行环境 依赖 jar 包下载,如下图所示: 2 前端控制器的配置 在我们的web.xml中添加如下配置: <!-- The front controller of this ...

  10. c# 获取应用程序exe文件路径及退出应用程序的几种方法

    this.GetType().Assembly.Location; Application.ExecutablePath; Application.StartupPath:和上面的相比缺少可执行文件 ...