visualvm-profile以及远程访问
使用visualvm的Profiler功能,可以提供两方面的性能跟踪功能:
Profile
一个是CPU,可以跟踪每个方法占用CPU的时长;比如你在发现CPU持续走高的时候可以通过Profile的CPU跟踪来确定是哪些函数耗费了性能;

一个是内存,内存的Profile通常可以检测到现存的对象都有哪些,占用了多少内存,对象存在多久等信息;通过内存Profile可以发现可疑的内存泄漏对象,进行分析;还可以针对某一个具体的对象进行内存跟踪,只要右键Class-name列下一行,有一个“log class library”,点击即可切换到跟踪指定对象的内存使用情况。
分析堆栈
可以在monitor的Tab页下,点击“heap dump”,可以会生成一个当前项目的堆栈,在生成的heapdump的标签页中,点击Find按钮即可(如下图)。如果发现某个对象可疑,通过链接进入进行选择,点到了右侧“Inspect”下面某个类,可以产看这个类的都有哪些实例,每个实例的对象情况更等等。

调试大对象
映入眼帘的左侧菜单的选择,是该对象有多少个实例,


远程访问
需要本机运行jstatd服务,并对外开放端口;
在JAVA_HOME/bin目录中,创建名称为jstatdAllPolicy文件(这个文件名称也可以顺便起,不过要与jstatd启动时指定名称相同),将以下内容拷贝到文件中。并保证文件的权限和用户都正确。
grant codebase"file:${java.home}/../lib/tools.jar"{ permission java.security.AllPermission; };
在JAVA_HOME/bin目录中,执行以下命令:
./jstatd -J-Djava.security.policy=jstatdAllPolicy-p -J-Djava.rmi.server.hostname=192.168.xxx.xxx
如果是tomcat,需要增加在catalina.sh中增加如下参数:
export CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
如果是jar包,则在java -jar XX.jar的后面跟上参数即可。
在远程机器,Remote节点下右键add Remote Host,录入IP后将会添加一个远程的节点,在该节点上面右键,选择“add jstatd Connection...",参数就是参数"com.sun.management.jmxremote.port"中指定的端口号。点击确定即可。
常见调试场景
1. 如果发现内存是锯齿状的,说明不断地有资源被创建,达到了回收上限触发一次回收;
2. 如果检测到Old区的空间被占满,那很可能是有资源没有被是释放,比如大量创建线程,用后没关闭;
visualvm-profile以及远程访问的更多相关文章
- JConsole和VisualVM远程访问JMX
1.jvisualvm监控tomcat 修改tomcat的bin目录下的 catalina.sh文件,搜索JAVA_OPTS="",在引号中添加参数 JAVA_OPTS=" ...
- Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收 ...
- 通过web远程访问服务器的ipython
如果想同过一个Web浏览器的方式远程访问服务器上的ipython notebook sever,可通过下面的步骤实现. 服务器:ubuntu14.04 server 客户端:windows/unix/ ...
- 华为云(ECS)-linux服务器中-Ubuntu图形界面安装-解决root登录受限-VNCviwer/Teamviwer远程访问教程
安装ubuntu-desktop .更新软件库 apt-get update .升级软件 apt-get upgrade .安装桌面 apt-get install ubuntu-desktop 解决 ...
- VisualVM远程连接Tomcat
最近项目已经要提测了,有时间来考虑一些性能上的事儿了.之前拜读过<深入理解java虚拟机>,只可惜当时功力尚浅,有些东西还是不太懂,而且应用场景也没有,所以借这次机会看看.当然了,这次并不 ...
- docker tomcat jvm 使用 visualVM监控
1. 建立基础镜像 FROM centos MAINTAINER fengjian <fengjian@senyint.com> ENV TZ "Asia/Shanghai&q ...
- Monitoring an IBM JVM with VisualVM
Monitoring an IBM JVM with VisualVM 分类: Java 2013-06-09 16:15 250人阅读 评论(0) 收藏 举报 JDK6 update 7 and o ...
- Java性能调优:利用VisualVM进行性能分析
JVisualVM 简介 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC ...
- Linux 安装JDK Tomcat MySQL(使用Mac远程访问)
阅读本文需要一定的Linux基础 一 环境 阿里云服务器: CentOS 7.4 64位(基于RedHat) 本机: macOS High Sierra 二 压缩包 JDK http://www.or ...
随机推荐
- js判断一个数组是否包含一个指定的值
今天看了一下 有好几种方法 总结一下 1:array.indexOf 此方法判断数组中是否存在某个值,如果存在返回数组元素的下标,否则返回-1 let arr = ['something', ...
- pppoe白皮书
转:https://blog.csdn.net/achejq/article/details/19478811 PPPoE技术白皮书 关键词:PPP,Ethernet,PPPoE 摘 要:PPP ...
- Sagan
来自Sagan官网:https://quadrantsec.com/services_technology/product_technology/ Sagan是一个多线程的,实时的安全信息事件管理分析 ...
- java项目 里的DAO,model,service, IMPL含义
在一般工程中 基本上都会出现上述的字眼首先 DAO 提供了应用程序与数据库之间的操作规范 和操作 用于通常数据库的增删查改 一般如果使用框架 都是由框架自动生成,提高访问效率和便于快速开发.hiber ...
- review18
数字格式化 程序可以直接使用String类调用format方法对数字进行格式化. format方法中的“格式化模式”是一个用双引号括起的字符序列(字符串),该字符序列的字符由格式符和普通字符所构成.代 ...
- numpy函数:[6]arange()详解
arange函数用于创建等差数组,使用频率非常高,arange非常类似range函数,会python的人肯定经常用range函数,比如在for循环中,几乎都用到了range,下面我们通过range来学 ...
- 啥是ETL、ELT
ETL就是Extract.Transfrom.Load即抽取.转换.加载三个英文单词首字母的集合.抽取:就是从源系统抽取需要的数据,这些源系统可以是同构也可以是异构的:比如源系统可能是Excel电子表 ...
- 包--R In Action
1.4 包R提供了大量开箱即用的功能,但它最激动人心的一部分功能是通过可选模块的下载和安装来实现的.目前有2500多个①称为包(package)的用户贡献模块可从http://cran.r-proje ...
- node中的加密模块 crypto
crypto 加密模块(不是很安全):是使用md5来加密,这是node自带的模块,不需要安装. 引入模块: const crypto = require('crypto'); 当用户注册时,我们将从前 ...
- 防止php重复提交表单更安全的方法
Token.php <?php /* * Created on 2013-3-25 * * To change the template for this generated file go t ...