转自: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开始.
相关推荐
总的来说,JVM原理、JVM调优、JVM内存模型和JAVA并发是Java程序员和系统管理员需要深入了解的知识点,因为它们直接影响到Java程序的性能和稳定性。了解这些知识点有助于开发者编写性能更优的代码,并在生产环境中对...
JVM调优实战 本文档旨在介绍JVM调优实战的各个方面,包括JVM内存、垃圾回收、性能优化等。通过对JVM内存结构、垃圾回收机制和性能优化策略的详细讲解,帮助读者深入理解JVM的工作原理和优化方法。 1. JVM内存结构 ...
### 马士兵JVM调优笔记知识点梳理 #### 一、Java内存结构 Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及...
在现代的软件开发与运行环境中,Java虚拟机(JVM)的性能调优是非常重要的一环,特别是在处理大型应用程序或者服务时,合适的JVM调优能够显著提升系统性能和稳定性。本篇文档详细介绍了JVM调优工具的命令使用及其...
在JVM调优实践中,了解各个运行时数据区的工作原理至关重要。以下是对这些区域的详细解析: 1. **虚拟机栈**:每个线程都有一个独立的虚拟机栈,用于存储方法调用时的栈帧。栈帧中包含局部变量表(存储方法中的变量...
Monkey老师的JVM调优课程,无疑为我们提供了一个宝贵的平台,来深入探究JVM的工作原理及其优化技巧。下面,我们就一起来深入学习Monkey老师关于JVM调优的核心知识点。 首先,我们要明白JVM的重要性。它是Java程序...
本文将围绕"JVM调优的实际应用"这一主题,深入探讨JVM的工作原理,讲解调优的重要性,并分享一些实用的调优工具和方法。 首先,了解JVM的工作原理是调优的基础。JVM主要分为以下几个区域:堆内存(Heap)、栈内存...
JVM调优是一个复杂的主题,涉及到对JVM内部机制的深入了解以及对Java语言特性的掌握。通过合理设置JVM参数、优化代码逻辑、使用监控工具等方式,可以显著提高Java应用程序的性能表现。希望本文能够为读者提供一个...
JVM调优是一个复杂而细致的过程,涉及对内存管理、垃圾回收等多个方面的综合考量。理解不同的垃圾回收算法及其适用场景是提高Java应用程序性能的关键。通过合理选择和配置垃圾回收器,可以显著提升系统的响应速度和...
总结,JVM调优是一项技术性极强的工作,需要深入理解JVM内存结构、垃圾回收机制,结合实际应用情况,通过调整相关参数实现最佳性能。实践中应结合理论知识与实践经验,不断测试、监控、分析,确保应用的高效稳定运行...
通过以上讲解,我们可以看到系统和JVM调优是一个综合性的工程,涉及到硬件、操作系统、网络以及Java自身等多个层面。在面试中,能够清晰地阐述这些知识点,展示出对性能优化的深入理解和实践经验,无疑会增加你的...
JVM调优总结 -Xms -Xmx -Xmn -Xss JVM 调优是 Java virtual machine 的性能优化,通过调整 JVM 的参数来提高 Java 应用程序的性能。其中,-Xms、-Xmx、-Xmn、-Xss 是四个重要的参数,分别控制 JVM 的初始堆大小、...
JVM调优是一项复杂且精细的任务,涉及对Java内存模型的深入理解和掌握。通过对数据类型、堆与栈的区别以及参数传递机制的理解,可以帮助开发者更好地诊断和解决性能问题。同时,合理的调优策略能够显著提升Java应用...
JVM类加载机制是Java虚拟机中的一种机制,它负责加载Java类文件到内存中,以便执行Java程序。类加载机制分为五个阶段:加载、验证、准备、解析和初始化。 加载 加载是类加载过程中的一个阶段,这个阶段会在内存中...
《JVM调优实战》是一份深入探讨Java虚拟机(JVM)性能优化的文档,主要分为理论篇和实战篇两大部分。本文将详细解析其中的关键知识点。 理论篇首先介绍了JVM内存模型,将其比喻为一个多功能的养鱼塘。在这个比喻中...
了解并熟练掌握这些JVM调优和Linux操作的知识点,不仅可以帮助你在面试中脱颖而出,也能在实际工作中有效提升问题解决效率,确保系统稳定运行。在面对复杂的系统问题时,能够迅速定位并解决,对于提升IT职业素养至关...
JVM 内存的系统级的调优主要的目的是减少 GC 的频率和 Full GC 的次数,过多的 GC 和 Full GC 是会占用很多的系统资源(主要是 CPU),影响系统的吞吐量。特别要关注 Full GC,因为它会对整个堆进行整理,导致 Full ...
了解并熟练掌握这些GC算法和JVM调优技巧,对于解决性能问题、优化Java应用的运行效率至关重要,同时也是面试中经常被问到的话题。通过实践和理解,开发者可以更好地理解和控制JVM的行为,从而编写出更高效、更稳定的...
标题《JVM调优和故障排除手册》预示着文档...整体而言,《JVM调优和故障排除手册》作为一本综合性的参考资料,旨在为JVM用户提供深度的性能调优和故障排除指导,帮助开发者更有效地管理和优化Java应用程序的运行环境。
### JVM调优详解 #### 前言 Java虚拟机(JVM)作为Java程序的运行环境,其性能直接影响着应用程序的响应时间和资源消耗。合理的JVM调优不仅可以提升程序的运行效率,还能优化用户体验。本文将详细介绍几种常用的垃圾...