JVM调优系统一(转)

转自:http://blog.csdn.net/opensure/article/details/46715675

 

SUN的JDK从1.3.1开始使用HotSpot虚拟机技术,主要使用C++实现,JNI接口部分用C实现.

Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢.而HotSpot编译器将常用的部分代码编译为本地(native)代码,这样显著高了性能.

HotSpot包括一个解释器和两个编译器,解释与编译混合执行模式,默认启动解释执行。

编译器:java源代码被编译器编译成class文件(字节码),java字节码在运行时可以被动态编译(JIT)成本地代码

解释器: 解释器用来解释class文件(字节码).

server启动慢,占用内存多,执行效率高,适用于服务器端应用;

client启动快,占用内存小,执行效率没有server快,默认情况下不进行动态编译,适用于桌面应用程序。

java-version

  Java HotSpot(TM) Client VM (build 14.3-b01,mixed mode, sharing)

   mixed mode 解释与编译 混合的执行模式 默认使用这种模式

   java -Xint -version

   Java HotSpot(TM) Client VM (build 14.3-b01,interpreted mode, sharing)

   interpreted 纯解释模式禁用JIT编译

   java-Xcomp -version

   Java HotSpot(TM) Client VM (build 14.3-b01,compiled mode, sharing)

   compiled 纯编译模式(如果方法无法编译,则回退到解释模式执行无法编译的方法)

 

JAVA应用由应用线程和JVM系统线程组成:

◦VMThread

◦ VMPeriodic Task Thread

◦Finalizer(java)

◦Reference Handler(java)

◦CompilerThread

◦ SignalDispatcher

◦ Attach  Listener

◦ LowMemory Detector

 

Java代码编译是由Java源码编译器来完成,流程图如下所示:


生成的class文件由以下部分组成, CLASS文件信息可以通过JAVAP查看:

•结构信息。包括class文件格式版本号及各部分的数量与大小的信息

•元数据。对应于Java源码中声明与常量的信息。包含类/继承的超类/实现的接口的声明信息、域与方法声明信息和常量池

•方法信息。对应Java源码中语句和表达式对应的信息。包含字节码、异常处理器表、操作数栈与局部变量区大小、操作数栈的类型记录(StackMapTable)、调试符号信息(LineNumberTable)

 

 

Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:


 

-XX:+PrintCompilation或-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly YourMainClass通过反汇编插件打印JIT编译生成的代码,jdk1.6U20开始.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值