- 浏览: 398718 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (760)
- 股票日志 (26)
- Selenium (0)
- selenium 2 环境的搭建 (1)
- 并发 (7)
- 框架开发 (1)
- 动态代理 (2)
- Struts2 (2)
- POI (2)
- jdk (3)
- maven (31)
- spring (35)
- mysql (31)
- 工作机会 (3)
- xtream (1)
- oracle dbms_metadata GET_DDL (0)
- SSI (1)
- DB (61)
- powermock (4)
- java 基础 (25)
- 多线程 (11)
- 高手 (2)
- java 底层 (2)
- 专业网站 (1)
- 开发联想 (1)
- 开发联想 (1)
- bat文件 (2)
- 清queue 语句 (1)
- 清queue 语句 (1)
- jquery (7)
- html5 (1)
- Jenkins (10)
- Linux (17)
- 工作issue (2)
- tomcat log (3)
- jvm (23)
- 项目细节 (0)
- oracle (41)
- 泛型 (3)
- 新知识点 (1)
- 数据库ddl 语句 (0)
- AQ (2)
- jms (0)
- 网络资源 (6)
- github (6)
- Easymock (1)
- Dom 解析XML (1)
- windows命令 (2)
- java (7)
- 正则表达式 (5)
- sequence (1)
- oracle 表meta信息 (1)
- 小工具技巧 (1)
- 辅助工具 (1)
- Junit (1)
- 泛型 generic (2)
- Java程序设计 (1)
- cglib (2)
- 架构师之路 (1)
- 数据库连接池 (5)
- c3p0 (1)
- eclipse使用 (1)
- oracle sql plus (1)
- 码农人生 (3)
- SVN (15)
- sqlplus (2)
- jsoup (1)
- 网络爬虫 (2)
- 新技能 (1)
- zookeeper (4)
- hadoop (1)
- SVNKIT (1)
- 从工具到知识点的整理 (1)
- log4j (13)
- 读文件 (0)
- 转义字符 (1)
- command (1)
- web service (3)
- 锁 (1)
- shell 脚本 (1)
- 遇到的错误 (2)
- tomcat (14)
- 房产 (5)
- bootstrap jquery ui (1)
- easyui (2)
- 个人征信 (1)
- 读写分离 (1)
- 备份 (1)
- rmi (6)
- webservice (1)
- JMX (4)
- 内存管理 (3)
- java设计 (1)
- timer (1)
- lock (2)
- concurrent (2)
- collection (1)
- tns (1)
- java基础 (15)
- File (1)
- 本机资源 (1)
- bat (1)
- windows (4)
- 数据结构 (3)
- 代码安全 (1)
- 作用域 (1)
- 图 (2)
- jvm内存结构 (1)
- 计算机思想 (1)
- quartz (6)
- Mongo DB (2)
- Nosql (4)
- sql (5)
- 第三方Java 工具 jar 项目 (2)
- drools (1)
- java swing (2)
- 调用console (1)
- runtime (1)
- process (1)
- swing (2)
- grouplayout (1)
- dubbo (0)
- bootstrap (0)
- nodejs (2)
- SVN hooks (1)
- jdbc (3)
- jdbc error (1)
- precedure (1)
- partition_key (1)
- active mq (1)
- blob (2)
- Eclipse (6)
- web server (1)
- bootstrapt (2)
- struts (1)
- ajax (1)
- js call back (1)
- 思想境界拓展 (1)
- JIRA (1)
- log (1)
- jaxb (3)
- xml java互相转换 (1)
- 装修 (2)
- 互联网 (2)
- threadlocal (3)
- mybatis (22)
- xstream (1)
- 排序 (1)
- 股票资源 (1)
- RPC (2)
- NIO (3)
- http client (6)
- 他人博客 (1)
- 代理服务器 (1)
- 网络 (2)
- web (1)
- 股票 (5)
- deadlock (1)
- JConsole (2)
- activemq (3)
- oralce (1)
- 游标 (1)
- 12月13日道富内部培训 (0)
- grant (1)
- 速查 (2)
- classloader (4)
- netty (4)
- 设计模式 (2)
- 缓存 (2)
- ehcache (2)
- framework (1)
- 内存分析 (2)
- dump (1)
- memory (2)
- 多高线程,并发 (1)
- hbase (2)
- 分布式系统 (1)
- socket (3)
- socket (1)
- 面试问题 (1)
- jetty (2)
- http (2)
- 源码 (1)
- 日志 (2)
- jni (1)
- 编码约定 (1)
- memorycache (1)
- redis (13)
- 杂谈 (1)
- drool (1)
- blockingqueue (1)
- ScheduledExecutorService (1)
- 网页爬虫 (1)
- httpclient (4)
- httpparser (1)
- map (1)
- 单例 (1)
- synchronized (2)
- thread (1)
- job (1)
- hashcode (1)
- copyonwriteArrayList (2)
- 录制声音 (1)
- java 标准 (2)
- SSL/TLS (1)
- itext (1)
- pdf (1)
- 钻石 (2)
- sonar (1)
- unicode (1)
- 编码 (4)
- html (1)
- SecurityManager (1)
- 坑 (1)
- Restful (2)
- svn hook (1)
- concurrentHashMap (1)
- 垃圾回收 (1)
- vbs (8)
- visual svn (2)
- power shell (1)
- wmi (3)
- mof (2)
- c# (1)
- concurrency (1)
- 劳动法 (1)
- 三国志游戏 (2)
- 三国 (1)
- 洪榕 (2)
- 金融投资知识 (1)
- motan (1)
- tkmybatis mapper (1)
- 工商注册信息查询 (1)
- consul (1)
- 支付业务知识 (2)
- 数据库备份 (1)
- 字段设计 (1)
- 字段 (1)
- dba (1)
- 插件 (2)
- PropEdit插件 (1)
- web工程 (1)
- 银行业知识 (2)
- 国内托管银行 (1)
- 数据库 (1)
- 事务 (2)
- git (18)
- component-scan (1)
- 私人 (0)
- db2 (14)
- alias (1)
- 住房 (1)
- 户口 (1)
- fastjson (1)
- test (6)
- RSA (2)
- 密钥 (1)
- putty (1)
- sftp (1)
- 加密 (1)
- 公钥私钥 (3)
- markdown (1)
- sweet (1)
- sourcetree (1)
- 好工具 (1)
- cmd (1)
- scp (1)
- notepad++ (1)
- ssh免密登录 (1)
- https (1)
- ssl (2)
- js (2)
- h2 (1)
- 内存 (2)
- 浏览器 (1)
- js特效 (1)
- io (1)
- 乱码 (1)
- 小工具 (1)
- 每周技术任务 (1)
- mongodb (7)
- 内存泄漏 (1)
- 码云 (2)
- 如何搭建java 视频服务器 tomcat (1)
- 资源 (1)
- 书 (1)
- 四色建模法 (1)
- 建模 (1)
- 配置 (1)
- 职位 (1)
- nginx (1)
- excel (1)
- log4j2 (2)
- 做菜 (1)
- jmap (1)
- jspwiki (1)
- activiti (1)
- 工作流引擎 (1)
- 安卓 (1)
- acitviti 例子 (1)
- 二维码 (1)
- 工作流 (1)
- powerdesign (2)
- 软件设计 (1)
- 乐观锁 (1)
- 王者荣耀 (1)
- session (2)
- token (5)
- cookie (4)
- springboot (24)
- jwt (2)
- 项目路径 (1)
- magicbook (1)
- requestType (1)
- json (2)
- swagger (1)
- eolinker (1)
- springdata (1)
- springmvc (1)
- controlleradvice (1)
- profile (1)
- 银行四要素 (1)
- 支付人员资源 (1)
- 支付渠道 (1)
- yaml (1)
- 中文编码 (1)
- mongo (2)
- serializable (1)
- 序列化 (1)
- zyd (1)
- unittest (1)
- 工具 (1)
- Something (1)
- 通达信 (1)
- protobuf (1)
- 算法 (1)
- springcloud (2)
- hikari (1)
- rocketmq (7)
- cachecloud (1)
- serfj (1)
- axure (1)
- lombok (1)
- 分布式锁 (1)
- 线程 (2)
- 同步代码块 (1)
- cobar (1)
- mq (1)
- rabbitmq (1)
- 定时执行 (1)
- 支付系统 (3)
- 唱歌 (1)
- elasticjob (1)
- 定时任务 (1)
- 界面 (1)
- flink (2)
- 大数据 (1)
- 接私活 (0)
- 内部培训 (2)
最新评论
-
dannyhz:
做股票从短线 试水,然后 慢慢发现 波段和 中期的故事可挖, ...
搭台唱戏 -
dannyhz:
http://developer.51cto.com/art/ ...
如何自己开发框架 它的注意点是什么
引用
JMX是什么
JMX是JAVA平台(JSE)标准的一部分,在J2SE 5.0中正式被加入。
JMX技术提供了一种简单,标准的方式管理注入app,设备,服务等资源,因为JMX技术是动态的,你能够用他来监控和管理资源,同时可以用来管理JM虚拟机。
JMX用java编程语言制定和定义了架构,设计模式,API以及服务来管理和监控应用程序和网络。
利用JMX,资源能够通过一个或者多个被称之为MBeans的java对象来管理和测量,这些Mbeans被注册到Mbean server上。Mbeans server攀岩了一个管理代理的角色,能够运行在大多数能够运行java语言的设备上。
在规范中定义的JMX agent由一个Mbean server(注册MBean)和一组处理MBeans的服务组成,JMX agent直接控制资源和使得他们能够远程管理应用。
JMX还定义了标准的JMX 连接器,使能够远程访问JMX agent。JMX连接器为不同的协议提供了相同的管理揭露。管理应用能够无关协议的,透明的管理资源。
我们为何需要JMX
l JMX能够使得JAVA应用能够很轻量级的,付出很小代价的就能被管理起来。
l JMX提供了标准的方式管理JAVA应用,系统,以及网络。
l JMX能够独立于JVM之外对其进行管理
l JMX提供了可伸缩的,动态的管理架构。
l JMX利用已经存在的标准的服务如同JNDI以及命名服务
JMX的架构
架构
利用JMX来管理资源,首先你必须利用JAVA语言来描述和管理资源,利用MBeans来实现访问资源,MBean必须符合JMX规范中定义的借口,除了标准的Mbean以外,JMX还提供一种MXBean,。
一旦一个资源被用Mbean所描述和度量,他就能通过JMX agent 被管理起来了,Mbean在设计的时候尽量保持简单和容易被实现,此外,JMX规范还提供了通知极致,在MBeans被生成以及产生变化得时候,能够利用事件机制来进行通知。
JMX agent
基于代理的JMX能够通过agent直接管理资源并使得这些资源能够被远程访问并管理。一般来说,agent和他所管理的资源是在同一个机器上的,但也不一定非得如此。
Jmx agent主要由Mbean server组成,Mbean通过Mbean server进行注册,JMX agent也包括一组管理Mbean的服务,至少一个的通信的适配器或者连接器用于接受远程管理应用的访问。
远程管理
我们能够通过很多种不同的方式来访问JMX所管理的设备能够,比如SNMP协议等,借助之前所说的JMX 通信适配器或者连接器,Mbean server能通被agent 之外的JVM访问。
JVM的监控管理器
平台MXBeans是一组JavaSE 平台用于管理JVM和JRE所提供的MXBeans,美俄平台 MXBean都封装了一部分JVM的特性,如类加载系统,JIT编译系统,垃圾回收器等等,这些MXBean能够通过一些监控和管理工具显示和进行交互,使得你能够管理不同的虚拟机的特性,比如jconsole。
JavaSE 平台提供了 platform Mbean server来注册这些platform MXBean,同时,你也可以注册自定义的MBean。
Jconsole
JavaSE提供的监控和管理工具(GUI)
如何通过jconsole管理和监控一个应用
运行一个JAVA示例程序
java-Dcom.sun.management.jmxremote -jar
jdk_home/demo/jfc/Notepad/Notepad.jar
-Dcom.sun.management.jmxremote开启JMX远程服务。
在运行中直接敲入jconsole,然后在本地进程列表中你能够找到Notepad.jar(本地进程,则不开启JMX远程服务依旧能找到),选择连接即可。
MBean
MBeans包括如下类型:
•Standard MBeans
•Dynamic MBeans
•Open MBeans
•Model MBeans
•MXBeans
标准的Mbean
标准的Mbean需要定义名字为SomethingMBean 的接口,这个接口包括一些属性的getter/setter以及操作,标准的Mbean包括一个接口和一个实现类。接口定义了该Mbean暴露在外的属性和操作,而类则实现了这些功能和管理度量资源的操作。
MBean接口:
package com.example;
public interface HelloMBean {
public void sayHello();
public int add(int x, int y);
public String getName();
public int getCacheSize();
public void setCacheSize(int size);
}
按照约定,一个Mbean接口一般以他的实现类为前缀,如这里叫做HelloMBean,则其实现类为Hello。
MBean实现
package com.example;
public class Hello ...
implements HelloMBean {
public void sayHello() {
System.out.println("hello, world");
}
public int add(int x, int y) {
return x + y;
}
public String getName() {
return this.name;
}
public int getCacheSize() {
return this.cacheSize;
}
public synchronized void setCacheSize(int size) {
...
this.cacheSize = size;
System.out.println("Cache size now " + this.cacheSize);
}
...
private final String name = "Reginald";
private int cacheSize = DEFAULT_CACHE_SIZE;
private static final int
DEFAULT_CACHE_SIZE = 200;
}
构造一个JMX Agent来管理资源
一旦资源能够被一个MBean来度量描述,我们需要把这些资源的管理工作在JMX Agent中执行起来。JMX Agent的核心组成部分是MBean Server,MBean Server注册的MBean的管理器。JMX Agent包括一组这样的MBean Server。
以下的Main代表了一个基本的JMX Agent。
package com.example;
import java.lang.management.*;
import javax.management.*;
public class Main {
public static void main(String[] args)
throws Exception {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("com.example:type=Hello");
Hello mbean = new Hello();
mbs.registerMBean(mbean, name);
...
System.out.println("Waiting forever...");
Thread.sleep(Long.MAX_VALUE);
}
}
JMX Agent开始就调用java.lang.management.ManagementFactory .getPlatformMBeanServer方法初始化了一个MBeanServer,如果这个Mbean Server被平台构造好,则会自动调用 MBeanServerFactory.createMBeanServer()来生成。
然后,JMX Agent定义了一个MBean的实例,每一个MBean都必须有一个符合JMX 规范的名字,他由一个域名和一组KEY-PROP组成,这里的域名是com.example(MBean所在的报名),KEY-PROP表示该MBean类型为Hello。然后通过 MBeanServer.registerMBean().将该MBean注册到MBean Server中。
执行标准MBean例子
javac com/example/*.java
java -Dcom.sun.management.jmxremote example.Main
jconsole
MXBeans
动态的MXBean主要还是无需MBean只引用一些预定义的数据类型。
如:
接口:
package com.example;
public interface QueueSamplerMXBean {
public QueueSample getQueueSample();
public void clearQueue();
}
实现:
package com.example;
import java.util.Date;
import java.util.Queue;
public class QueueSampler
implements QueueSamplerMXBean {
private Queue<String> queue;
public QueueSampler (Queue<String> queue) {
this.queue = queue;
}
public QueueSample getQueueSample() {
synchronized (queue) {
return new QueueSample(new Date(),
queue.size(), queue.peek());
}
}
public void clearQueue() {
synchronized (queue) {
queue.clear();
}
}
}
package com.example;
import java.beans.ConstructorProperties;
import java.util.Date;
public class QueueSample {
private final Date date;
private final int size;
private final String head;
@ConstructorProperties({"date", "size", "head"})
public QueueSample(Date date, int size,
String head) {
this.date = date;
this.size = size;
this.head = head;
}
public Date getDate() {
return date;
}
public int getSize() {
return size;
}
public String getHead() {
return head;
}
}
在jconsole界面上,该对象为动态对象,由一组预定义的对象组成
private final Date date;
private final int size;
private final String head;
在jconsole中,你能够在这个tag中看到CompositeDataSupport ,双击展开,你能够看见QueueSample 的这三个属性,是因为MXBean框架已经把对象实例转换成CompositeData,Jconsole无需引用自定义对象QueueSample ,因为这个类不存在JConsole的classpath,,通过这种方式,我们无需进行不相关的类引用。
消息通知
JMXAPI定义了一种能够使得Mbean发出通知的机制,如当一个状态发生改变的时候,触发事件,发出通知。
为了发出通知,MBean必须实现接口NotificationEmitter或者继承NotificationBroadcasterSupport.当需要发出通知的时候,你必须实例化一个javax.management.Notification或者其子类(如AttributeChangedNotification),通过NotificationBroadcasterSupport.sendNotification.方法将其发出。所有的Notification都需要一个来源,这个来源就是发出该通知的MBean的名字。所有的通知都必须有一个序列号,以便对来自同一个来源的消息进行排序处理,这个序列号可以是0,但建议是自增的。
加入了消息通知的HelloMBean
package com.example;
import javax.management.*;
public class Hello
extends NotificationBroadcasterSupport
implements HelloMBean {
public void sayHello() {
System.out.println("hello, world");
}
public int add(int x, int y) {
return x + y;
}
public String getName() {
return this.name;
}
public int getCacheSize() {
return this.cacheSize;
}
public synchronized void setCacheSize(int size) {
int oldSize = this.cacheSize;
this.cacheSize = size;
System.out.println("Cache size now " + this.cacheSize);
Notification n = new AttributeChangeNotification(this,
sequenceNumber++, System.currentTimeMillis(),
"CacheSize changed", "CacheSize", "int",
oldSize, this.cacheSize);
sendNotification(n);
}
@Override
public MBeanNotificationInfo[] getNotificationInfo() {
String[] types = new String[]{
AttributeChangeNotification.ATTRIBUTE_CHANGE
};
String name = AttributeChangeNotification.class.getName();
String description = "An attribute of this MBean has changed";
MBeanNotificationInfo info =
new MBeanNotificationInfo(types, name, description);
return new MBeanNotificationInfo[]{info};
}
private final String name = "Reginald";
private int cacheSize = DEFAULT_CACHE_SIZE;
private static final int DEFAULT_CACHE_SIZE = 200;
private long sequenceNumber = 1;
}
AttributeChangeNotification 的构造参数包括:
l 消息来源。Hello MBean的名称。
l 序列号,这里是自增的。
l 时间戳。
l 消息通知的内容。
l 变化得属性的名称
l 变化得属性的类型
l 变化得属性的旧值
l 变化后的新值。
Jconsole能够在tag中看到通知的相关内容。
远程管理
启动JMXAgent
java -Dcom.sun.management.jmxremote.port = 9999 \
-Dcom.sun.management.jmxremote.authenticate = false \
-Dcom.sun.management.jmxremote.ssl = false \
com.example.Main
点开jconsole,选择远程进程,输入hostname:9999,点击连接。
自定义JMX 客户端
前面我们使用的客户端一直都是系统提供的Jconsole,如果需要我们自定义JMX 客户端呢?比如我们来自己实现进程的监控,管理,统计,告警的ITIL系统,应该如何呢?
引入JMX 远程API类
package com.example;
...
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
public class Client {
构建通知监听器
ublic static class ClientListener implements NotificationListener {
public void handleNotification(Notification notification,
Object handback) {
echo("\nReceived notification:");
echo("\tClassName: " + notification.getClass().getName());
echo("\tSource: " + notification.getSource());
echo("\tType: " + notification.getType());
echo("\tMessage: " + notification.getMessage());
if (notification instanceof AttributeChangeNotification) {
AttributeChangeNotification acn =
(AttributeChangeNotification) notification;
echo("\tAttributeName: " + acn.getAttributeName());
echo("\tAttributeType: " + acn.getAttributeType());
echo("\tNewValue: " + acn.getNewValue());
echo("\tOldValue: " + acn.getOldValue());
}
}
}
构建RMI 连接器客户端
Client类构建了一个RMI的链接,他被配置成了在本地访问Main的RMI 连接器Server。
public static void main(String[] args) throws Exception {
echo("\nCreate an RMI connector client and " +
"connect it to the RMI connector server");
JMXServiceURL url =
new JMXServiceURL("service:jmx:rmi:///jndi/rmi://:9999/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
JMXServiceURL中的Url代表了如何找到连接器server,这个URL允许连接器客户端访问注册到本地host和端口9999的RMI服务,connect方法的第二个参数表述环境变量map。
远程连接MBean Server
当RMI 链接就绪之后,JMXclient必须连接远程的MBean Server,以使得他能够与注册在JMXAgent中的MBean是进行交互。
MBeanServerConnection mbsc =
jmxc.getMBeanServerConnection();
我们能够通过如下方法在Mbean Server中查询和获取MBean
echo("\nDomains:");
String domains[] = mbsc.getDomains();
Arrays.sort(domains);
for (String domain : domains) {
echo("\tDomain = " + domain);
}
...
echo("\nMBeanServer default domain = " + mbsc.getDefaultDomain());
echo("\nMBean count = " + mbsc.getMBeanCount());
echo("\nQuery MBeanServer MBeans:");
Set<ObjectName> names =
new TreeSet<ObjectName>(mbsc.queryNames(null, null));
for (ObjectName name : names) {
echo("\tObjectName = " + name);
}
通过代理执行远程MBean的操作
mbsc.addNotificationListener(mbeanName, listener, null, null); //加入监听器
ObjectName mxbeanName = new ObjectName ("com.example:type=QueueSampler");
QueueSamplerMXBean mxbeanProxy = JMX.newMXBeanProxy(mbsc,
mxbeanName, QueueSamplerMXBean.class);
QueueSample queue1 = mxbeanProxy.getQueueSample();
echo("\nQueueSample.Date = " + queue1.getDate());
echo("QueueSample.Head = " + queue1.getHead());
echo("QueueSample.Size = " + queue1.getSize());
echo("\nInvoke clearQueue() in QueueSampler MXBean...");
mxbeanProxy.clearQueue();
QueueSample queue2 = mxbeanProxy.getQueueSample();
echo("\nQueueSample.Date = " + queue2.getDate());
echo("QueueSample.Head = " + queue2.getHead());
echo("QueueSample.Size = " + queue2.getSize());
通过newMBeanProxy来构造一个MBean本地代理,如果你选择的是一个MXBean,只需要相应的选择JMX.newMXBeanProxy 即可,通过这种远程调用的方式,你就好像执行本地方法一样的便捷。
关闭连接
jmxc.close();
最后
JMX的介绍就到此为此了,在这里
jdk_home/sample/jmx/jmx-scandir
你可以找到更多的JMX以及MBean的实例。
发表评论
-
使用jmap命令得到 jvm内存快照文件
2018-05-09 17:01 991jstat -gcutil 9744 9744是pid ... -
很详细的几篇 jconsole 指导的文章
2018-05-09 15:27 294https://blog.csdn.net/wuzhiping ... -
如何 调优jvm的一个实例
2018-01-05 15:32 393http://wetest.qq.com/lab/view/3 ... -
如何查内存泄漏的好文章
2017-10-17 16:48 438http://www.cnblogs.com/nsw2018/ ... -
深入jvm 讲得比较清楚
2017-10-17 16:36 725http://www.jianshu.com/p/759e02 ... -
关于GC 的空间大小和 GC时机问题参考
2017-05-10 13:58 521http://www.importnew.com/13954. ... -
JMX 例子 得到java mx对象
2017-02-09 16:03 518java 跑一个系统用这样的参数 vm argume ... -
java 内存测试
2017-02-03 19:29 290关于内存这块的 代码本地测试路径 D:\multithrea ... -
全例子诠释oom现象, 经典
2017-02-03 15:54 609http://www.cnblogs.com/dingying ... -
自己做例子看出来的一点名堂 对象在各个区区的位置
2017-02-03 14:13 332public class MethodArea ... -
各种OOM 错误的 例子 深入理解JVM—JVM内存模型
2017-02-02 22:36 513引用 http://www.cnblogs.com/ ... -
JVM分代、垃圾回收概念与一个JVM参数调优示例
2017-02-02 22:22 530引用 http://shensy.iteye.com/ ... -
从JVM堆中对象结构看编程内存优化
2017-02-02 22:25 330引用 http://shensy.iteye.com/blo ... -
jvm 调优方法
2017-02-02 19:52 371http://blog.csdn.net/gzh0222/ar ... -
JVM(java 虚拟机)内存设置
2016-09-30 17:25 405JVM(java 虚拟机)内存设置 一、设置JVM内存设置 ... -
深入理解Java内存模型(一)——基础
2016-09-30 17:25 288http://www.infoq.com/cn/article ... -
JVM内存管理及垃圾回收
2016-09-30 17:26 413http://blog.csdn.net/zhangerqin ... -
jvm 内存模型
2016-09-01 18:55 361本篇其实就是一个读书笔记,书是《深入理解JAVA虚拟机》,在网 ... -
图解JVM
2016-09-01 18:54 367http://ifeve.com/a-simple-examp ... -
console与jmx分析 , jvm信息
2016-05-30 17:07 466http://www.360doc.com/content/1 ...
相关推荐
对于初学者,这个"最简单JMX例子"将展示如何创建一个简单的MBean,如何在Eclipse这样的集成开发环境中配置和运行,以及如何通过标准的JMX客户端工具进行交互。通过学习这个例子,你可以理解JMX的基本结构和用法,为...
这个"jmx例子一则"可能是一个博客文章,详细解释了如何使用JMX进行实际操作。下面,我们将深入探讨JMX的核心概念、作用以及如何在实际应用中使用。 首先,JMX提供了一个灵活的框架,通过MBeans(Managed Beans)来...
本篇文章将深入探讨JMX的核心概念、功能及如何通过一个小例子来理解和使用JMX。 **1. JMX核心概念** - **MBean(Managed Beans)**: MBean是JMX中最基本的管理单元,它是Java对象,代表可管理的资源或服务。MBean...
在Spring中集成JMX(Java Management Extensions)技术,可以使我们能够远程管理和监控应用中的对象,比如动态修改服务端的属性,这对于调试和性能优化非常有帮助。本教程将引导你入门Spring框架下的JMX应用。 首先...
在这个"一个jmx的小例子"中,我们很可能是通过编写Java代码来创建和操作MBeans,然后使用Eclipse这样的集成开发环境(IDE)来运行示例。Eclipse本身并不直接支持JMX,但可以通过安装插件如JConsole或VisualVM来辅助...
这个压缩包中的例子很可能是创建了一个简单的Spring应用,并且配置了JMX支持,展示如何将Spring的bean暴露为MBeans进行管理和监控。通过研究这些示例,新人可以更好地理解JMX和Spring如何协同工作,提升他们的Java...
书中提供了几个典型的例子,兼顾各种开发平台,这些例子的代码稍作修改就可以直接应用于项目开发之中,代码源文件可以从图灵网站下载。本书内容广泛且深入,同时适用于各个层次的Web应用开发人员。
在"JMX实用例子详解(包括各种Mbean)"这个主题中,我们可以深入探讨以下几个方面: 1. **创建MBeans**:展示如何定义和注册Standard MBeans、Dynamic MBeans和Open MBeans,以及它们各自的优缺点。 2. **管理...
你可以通过解压这个文件,阅读代码并运行例子来更好地理解JMX的工作原理。例如,你可能会看到如何创建和注册MBeans,以及如何使用MBeanServer进行操作。 `JMX学习总结.docx`和`JMX技术.docx`可能是两份文档,详细...
在这个入门例子中,我们将深入探讨JMX的核心概念以及如何通过提供的源码实现一个简单的JMX应用。 首先,`HelloAgent.java`通常是实现JMX代理的类,这个代理负责注册MBeans(Managed Beans),这是JMX中的核心组件。...
标题和描述均提到了“jmx第一个学习例子”,这标志着文章旨在引导读者通过一个实践性的示例理解Java Management Extensions(JMX)的基础概念和技术。JMX作为一项由Sun Microsystems(现Oracle)提出的技术,用于...
压缩包里有:http_sample.jmx,JMeterPlugins-Extras.jar,JMeterPlugins-Standard.jar,ServerAgent-2.2.1.zip 1:安装Java8环境 2:安装apache-jmeter-3.1 ...5:启动Jmeter,修改jmx的配置,运行脚本。
通过学习并实践这些JMX的例子,开发者能够熟练掌握如何利用JMX进行应用的管理和监控,提高系统的可维护性和稳定性。对于大型分布式系统,JMX的价值尤为突出,它为系统运维提供了一种灵活、强大的工具集。
在上述例子中,我们创建了一个 JMX Agent,并将其绑定到本地的 RMI 端口 9999 上。这种配置虽然能够实现 JMX 监控和管理功能,但存在安全漏洞。默认情况下,这个 JMX Agent 的 RMI 端口是不加密的,并且没有进行身份...
这些例子可以帮助读者快速上手,理解如何创建、注册MBeans,如何通过MBean Server进行操作,以及如何设置和使用JMX连接器。通过实践,学习者可以更深入地掌握JMX的精髓。 总结来说,JMX是Java平台的重要管理工具,...
让我们通过一个简单的例子来了解JMX的工作流程: 1. 首先,定义一个MBean接口,比如`HelloWorldMBean`,包含一个返回字符串的属性`greeting`和一个输出问候的`sayHello`操作。 ```java public interface ...
在本章中,我们将通过一个例子来说明如何使用动态MBean来管理Jini服务的广告方式。这个MBean将负责改变Jini服务在网络中的自我呈现方式。此外,我们还将创建一个动态MBean的超类,为未来资源的元数据描述提供代码...