java性能分析jconsole详解
目录
- jconsole简介
- jconsole远程
前言:
本章节继续学习java性能优化的相关知识。重点学习什么是jconsole,以及如何使用?它能帮助我们做什么?
jconsole简介
提供JVM图形化视图,包括内存、线程、类、cpu等信息。用户可以通过jconsole工具去连接指定的jvm,监控jvm的变化。
我们可以在jdk的安装文件bin当中找到它:
双击运行会打开如下界面,上面是本地的java进程,下面是通过远程的方式连接服务器上面的java进程。
我们随便点击一个本地进程得到如下的界面:
jconsole远程
jconsole除了可以查看本地的jvm信息,还能够查看远程服务的jvm信息。前提是在远程服务启动的时候,添加下面的参数:
-Dcom.sun.management.jmxremote=true # 服务器ip -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx # 设置jconsole连接的端口 -Dcom.sun.management.jmxremote.port=8090 # 是否使用账号密码 -Dcom.sun.management.jmxremote.authenticate=false # 关闭ssl -Dcom.sun.management.jmxremote.ssl=false
如下所示:
nohup java -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx -Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar -Xms1g -Xmx1g weather-forecast-0.0.1-SNAPSHOT.jar>/dev/null &
此时我们打开windows中的jconsole,进行连接:
此时我们仍然是不能连接成功的,主要原因是jmx需要的端口不知我们指定的一个,如我使用的8090,还有另外两个,使用netstat -nltp
命令查看如下:
所以我们需要在防火墙除 8090 外,将这两个端口也开放,如果是云服务器就要去控制台开放对应的策略。完成上面的操作总算可以完成远程连接,对我们的jvm进行监控了。
到此这篇关于java性能分析jconsole详解的文章就介绍到这了,更多相关java jconsole内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
如何利用JConsole观察分析Java程序的运行并进行排错调优
一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JConsole(或者,它更高端的 "近亲" VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码. 二.如何启动JConsole 1.如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole 即可. 2.如果从 GUI shell 启动,找到 JDK 安装路
-
解决java maven项目找不到jconsole-1.8.0.jar和tools-1.8.0.jar包问题
今天遇到了这样一种情况,自己的maven项目中并没有引用的jar包出现在了Maven Dependencies的依赖包中.而我在pom.xml自己没有没有引入啊. 图示 怀疑是自己的alibaba 的druid所依赖的包: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.14</version>
-
Java JConsole远程连接配置案例详解
JConsole远程连接还是有一点坑的.这里记录一下配置过程,好记性不如烂笔头. 1.在远程机的tomcat的catalina.sh中加入配置: JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.202.121 -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
-
java性能分析jconsole详解
目录 jconsole简介 jconsole远程 前言: 本章节继续学习java性能优化的相关知识.重点学习什么是jconsole,以及如何使用?它能帮助我们做什么? jconsole简介 提供JVM图形化视图,包括内存.线程.类.cpu等信息.用户可以通过jconsole工具去连接指定的jvm,监控jvm的变化. 我们可以在jdk的安装文件bin当中找到它: 双击运行会打开如下界面,上面是本地的java进程,下面是通过远程的方式连接服务器上面的java进程. 我们随便点击一个本地进程得到如下的
-
Java struts2请求源码分析案例详解
Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定.性能优异.设计成熟的WEB框架. 我这里的struts2源码是从官网下载的一个最新的struts-2.3.15.1-src.zip,将其解压即可.里面的目录页文件非常的多,我们只需要定位到struts-2.3.15.1\src\core
-
java中stringbuffer线程安全分析实例详解
在对于一些类作用于线程时,安全系数高的线程更推荐大家使用,在尽可能的程度上降低程序出错的可能性.对于本篇所要提到的StringBuffer而言,在其缓冲区中有多个线程的存在,我们在查询其内部方法时发现了锁的存在.现在我们就StringBuffer线程.锁的应用.线程安全分析逐步带来介绍. 1.StringBuffer线程说明 Java.lang.StringBuffer线程安全的可变字符序列.一个类似于String的字符串缓冲区,但不能修改.虽然在任意时间点上它都包含某种特定的字符序列,但通过某
-
Java ThreadLocal原理解析以及应用场景分析案例详解
目录 ThreadLocal的定义 ThreadLocal的应用场景 ThreadLocal的demo TheadLocal的源码解析 ThreadLocal的set方法 ThreadLocal的get方法 ThreadLocalMap的结构 ThreadLocalMap的set方法 ThreadLocalMap的getEntry方法 ThreadLocal的内存泄露 如何避免内存泄露呢 应用实例 实际应用二 总结 ThreadLocal的定义 JDK对ThreadLocal的定义如下: The
-
Java中的HashSet详解和使用示例_动力节点Java学院整理
第1部分 HashSet介绍 HashSet 简介 HashSet 是一个没有重复元素的集合. 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素. HashSet是非同步的.如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步.这通常是通过对自然封装该 set 的对象执行同步操作来完成的.如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来"包装" set.
-
Java 中的HashMap详解和使用示例_动力节点Java学院整理
第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射. HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Serializable接口. HashMap 的实现不是同步的,这意味着它不是线程安全的.它的key.value都可以为null.此外,HashMap中的映射不是有序的. HashMap 的实例有两个参数影响其性能:"初始容量" 和 "加载因子&quo
-
java ThreadLocal使用案例详解
本文借由并发环境下使用线程不安全的SimpleDateFormat优化案例,帮助大家理解ThreadLocal. 最近整理公司项目,发现不少写的比较糟糕的地方,比如下面这个: public class DateUtil { private final static SimpleDateFormat sdfyhm = new SimpleDateFormat( "yyyyMMdd"); public synchronized static Date parseymdhms(String
-
Java之HashMap案例详解
概述 这篇文章,我们打算探索一下Java集合(Collections)框架中Map接口中HashMap的实现.Map虽然是Collctions框架的一部分,但是Map并没有实现Collection接口,而Set和List是实现Collection接口的. 简单来说,HashMap主要通过key存储value值,并且提供了添加,获取和操作存储value的方法.HashMap的实现基于HashTable. HashMap内部呈现 Key-value对在内部是以buckets的方式存储在一起,最终成为
-
Java 阻塞队列BlockingQueue详解
目录 一. 前言 二. 认识BlockingQueue 三.BlockingQueue的核心方法: 四.常见BlockingQueue 五. 小结 一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利.本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景. 二. 认识BlockingQueue 阻塞队列,
-
Java线程池 ThreadPoolExecutor 详解
目录 一 为什么要使用线程池 二 线程池原理详解 2.1 线程池核心组成 2.2 Execute 原理 三 线程池的使用 3.1 创建线程池 3.1.1 自定义线程池 3.1.2 功能线程池 3.1.3 功能线程池存在的问题 3.2 向线程池提交任务 3.3 关闭线程池 3.4 自定义线程池需要考虑因素 一 为什么要使用线程池 对于操作系统而言,创建一个线程的代价是十分昂贵的, 需要给它分配内存.列入调度,同时在线程切换时要执行内存换页,清空 CPU 缓存,切换回来时还要重新从内存中读取信息,破
随机推荐
- PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
- AngularJS封装$http.post()实例详解
- https证书选择之DV型、OV型、EV型证书的主要区别
- iOS设置可选择圆角方向的控件圆角
- 谈谈XCode9的新变化
- 使用Java发送带附件的附件的示例
- node.JS md5加密中文与php结果不一致的解决方法
- asp.net编程实现删除文件夹及文件夹下文件的方法
- PHP实现数组递归转义的方法
- Python进程通信之匿名管道实例讲解
- 农历与西历对照
- 用vbs实现虚拟主机和域名查循的脚本
- Linux 管理员手册(7)
- 详解JavaScript的变量和数据类型
- 基于Windows C++ 应用程序通用日志组件的使用详解
- Java项目安全处理方法
- 免费吧-免费主页空间
- 深入理解Vue官方文档梳理之全局API
- Angular(5.2->6.1)升级小结
- collection集合体系与并发修改异常的解决方法