[Java性能剖析]JVM Management API
JVM本身提供了一组管理的API,通过该API,我们可以获取得到JVM内部主要运行信息,包括内存各代的数据、JVM当前所有线程及其栈相关信息等
等。各种JDK自带的剖析工具,包括jps、jstack、jinfo、jstat、jmap、jconsole等,都是基于此API开发的。本篇对这部
分内容进行一个详细的说明。
参考:http://java.sun.com/javase/6/docs/api/java/lang/management/package-summary.html
一、Management API
我们先看一下从Sun JVM我们可以获取到哪些信息,如下图(来自于JConsole的MBean部分的截图):
1.HotSpotDiagnostic:非标准的监控JMX,这块是Sun JVM自带的,主要提供了两个功能
修改JVM的启动参数(譬如在不需要重启的情况下设置-XX:+HeapDumpOnOutOfMemoryError参数使得JVM内存不足的时候自动dump出堆空间到文件提供后续分析)
Dump堆信息到文件,可以猜测jmap工具是基于此功能来完成的
我们通过com.sun.management.HotSpotDiagnosticMXBean定义了解其主要功能
Java代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://ayufox.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" src="http://ayufox.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=public%20interface%20HotSpotDiagnosticMXBean%0A%7B%0A%20%20%20%20void%20dumpHeap(String%20s%2C%20boolean%20flag)%20throws%20IOException%3B%0A%20%20%20%20List%20getDiagnosticOptions()%3B%0A%20%20%20%20VMOption%20getVMOption(String%20s)%3B%0A%20%20%20%20void%20setVMOption(String%20s%2C%20String%20s1)%3B%0A%7D" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14">
public
interface
HotSpotDiagnosticMXBean
{
void
dumpHeap(String s,
boolean
flag)
throws
IOException;
List get
相关文档:
public class SplitString {
/**
* @param args
*/
public static void main(String[] args) {
String str = "中Zell中国5000年,Congruations!";
& ......
Publication and Escape 发布一个对象意味着能够从它能够从它当前范围之外被访问到。比如,保存可以被其他代码找到的这个对象的一个引用,或者将其作为一个非私有方法的返回值,或者将其作为参数传递给其它的类。 public static Set<Secret> knownSecrets;
public void initialize() {
knownSecrets = new Ha ......
1、JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口。
2、EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。
3、Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟 ......
Java类的初始化顺序
我把Java类的初始化顺序分为两部分。第一部分是类的初始化,第二部分是对象的初始化。
在初始化之前JVM必须先把该类的字节码加载到内存中来。这时不管创不创建对象都会马上执行类的初始化:
执行静态初始化表达式(如static int a = 10)和静态初始化块(即static{}中的内容),注意两 ......
最近读完<Java并发编程实践>,无疑这是一本好书,它使得我对线程,锁,以及与并发相关的
一些知识体系更加完备,闲话不多说,下面我系统梳理了下里面的一些理论要点,相信实践上
面,大家或多或少都会有体会,那么用理论的知识点将实践体会笼络起来,将会形成更加牢固
和完备的知识体系,至少我这么认为,写这一篇笔记也是用以 ......