`
zhaohaolin
  • 浏览: 1011386 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

认识Java虚拟机及其性能

    博客分类:
  • JVM
阅读更多

Java虚拟机(Java virtual machine,JVM)是运行Java才程序必不可少的机制。编译后的Java程序指令并不直接在硬件系统的CPIJ上执行,而是由JVM执行。JVM 是编译后的Java程序和硬件系统之间的接口,程序员可以把JVM看作一个虚拟的处理器。它不仅解释执行编译后的Java指令,而且还进行安全检查。它是 Java程序能在多平台间进行无缝移植的可靠保证,同时也是Java程序的安全检验引擎。
 
Java虚拟机规范中给出了JVM的定义:JVM是在一台真正的机器上用软件方式实现的一台假想机。JVM使用的代码存储在。class文件中。JVM的某些指令很像真正的CPU指令,包括算术运算、流控制和数组元素访问等。
 
Java虚拟机规范提供了编译所有Java代码的硬件平台。因为编译是针对假想机的,所以该规范能让Java程序独立于平台。它适用于每个具体的硬件平台,以保证为JVM编译的代码的运行。JVM不但可以用软件实现,而且可以用硬件实现。
 
JVM的具体实现包括:指令集(等价于CPIJ的指令集)、寄存器组、类文件格式、栈、垃圾收集堆、内存区。
 
JVM的代码格式为压缩的字节码,因而效率较高。由JVM字节码表示的程序必须保持原来的类型规定。Java主要的类型检查是在编译时由字节码校验器完成的。Java的任何解释器必须能执行符合JVM定义的类文件格式的任何类文件。
 
Java 虚拟机规范对运行时数据区域的划分及字节码的优化并不做严格的限制,它们的实现依平台的不同而有所不同。JVM的实现叫做Java运行时系统,简称为运行 时。Java运行时必须遵从Java虚拟机规范,这样,Java编译器生成的类文件才可被所有Java运行时系统下载。嵌入了Java运行时系统的应用程 序,就可以执行Java程序了。目前有许多操作系统和浏览器都嵌入了Java运行时环境。
 
Java虚拟机的性能Java在问世之初,因其没有完全优化,并且是解释执行,因此Java程序的运行效率较低。同时,有着较长发展史、已非常成熟的C+十语言仍在开发界扮演着主要角色,人们往往拿C++的性能效率与刚诞生的Java相比较,这当然失之偏颇。
 
Java 解释器经过不断的优化,字节码的执行速度已有很大提高。另外,在字节码执行之前可以先经过JIT编译器(just in time compiler)进行编译,生成针对具体平台的本机执行代码。它的执行效率可比解释执行的效率提高4~8倍。现在许多厂商都提供JlT编译器,这项技术 已非常成熟。由于字节码与平台无关,所以经过编泽的Java仍不失跨平台的特点。
 
Hotspot技术是Sun公司推出的一种全新技术。 它提供对代码的运行时选择,为的是从根本上解决Java程序的效率问题。在程序执行时,I{otspot对每个字节码指令进行分析,根据它的执行次数,动 态决定它的执行方式。比如,一段指令需要多次重复执行,则立即编译为可执行代码。如果是只执行一次的简单指令,且解释执行的效率更高,则使用解释执行的方 式。有了这项技术,Javal的效率问题基本上可以得到解决。

分享到:
评论

相关推荐

    Java虚拟机(JVM)面试题(总结最全面的面试题!!!)

    Java虚拟机(JVM)是Java程序的核心组成部分,它使得Java具有“一次编写,到处运行”的跨平台特性。Java代码经过编译后变成字节码(.class文件),这种字节码是平台无关的,可以在任何安装了JVM的平台上运行。JVM...

    第一章认识Java.

    由标题“第一章认识Java”以及描述中的“Java发展”,我们可以从中提炼出关于Java的基本信息及其发展历程的关键点。 ##### 历史背景 - **开始研究**:Java项目始于1990年,最初由Sun Microsystems发起。 - **Oak**...

    java虚拟机源码-Deep-Understanding-Of-JVM:深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)源代码

    总的来说,通过深入研究《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》的源代码,开发者不仅可以提升对JVM内部机制的认识,还能提高解决问题和优化性能的能力,这对于任何Java开发者来说都是宝贵的财富。

    JavaTutorial

    - **解释型且性能良好**:虽然Java代码需要通过Java虚拟机(JVM)解释执行,但通过即时编译器(JIT Compiler)等技术,Java程序的性能得到了极大提升。 - **动态**:Java具有良好的动态特性,如反射机制等,使得程序...

    互联网Java工程师面试突击教程.zip

    其次,深入理解JVM(Java虚拟机)是提升面试竞争力的关键。这包括JVM内存模型(堆、栈、方法区、本地方法栈等)、垃圾回收机制(GC)及其优化策略、类加载机制(双亲委派模型)等。熟悉这些内容有助于解决性能调优和...

    最新Thinking in java第四版经典版

    最后,Java是一种平台无关的编程语言,它依赖于Java虚拟机(JVM)来实现这一点。书中也会涉及JVM的基本工作原理,以及Java的跨平台特性是如何得以实现的。理解JVM的工作机制对于深入学习Java和提高程序的性能至关...

    java学习资料

    - 解释执行:Java代码被编译成字节码,然后由Java虚拟机解释执行。 - 健壮性:Java有严格的错误检查机制,能够避免许多常见的编程错误。 - 安全性:Java提供了多种安全机制,确保应用程序的安全运行。 - 可移植...

    深入理解Android:卷I--详细书签版

    行讲解,希望这样做能帮助读者更快、更准确地把握各模块的工作流程及其本质。本书大部分章节中都专门撰写了“拓展思路”的内容,希望这部分内容能激发读者对Android代码进行深入研 究的热情。    本书面向的读者...

    浅析计算机软件JAVA编程的特点及应用.pdf

    Java源代码被编译成中间码,这种中间码再由Java虚拟机(JVM)解释执行,JVM可以根据不同平台的具体实现进行调整,从而实现平台无关性。 安全性同样是Java语言非常重视的特点,尤其是在网络环境中。Java提供了丰富的...

    JVM基础系列

    ### JVM基础系列——深入了解Java虚拟机的重要性 #### 一、引言 随着Java技术的不断发展,Java虚拟机(JVM)已成为软件开发人员不可或缺的核心技能之一。对于初学者而言,掌握JVM的基础知识不仅可以帮助深入理解Java...

    IBM JAVA培训大纲

    - **JAVA语言概述**:了解JAVA的发展历程、技术组成、语言特性以及JAVA虚拟机的基本原理。 - **JAVA开发环境及过程**:学习环境变量的配置方法、JAVA编程的基本步骤以及常用的编辑器介绍。 - **JAVA开发基础语法**:...

    jdk和jre的区别

    通过以上分析,我们可以清晰地认识到JDK与JRE之间的区别及其各自的作用。对于开发者而言,需要安装JDK来进行Java程序的开发和调试;而对于Java程序的最终用户,则只需安装JRE即可运行Java应用。此外,了解JDK和JRE的...

    我的java笔记易懂讲解

    它的设计目标是“一次编写,到处运行”,通过Java虚拟机(JVM)实现了跨平台的特性。 2. **Java语法基础**:Java语法与C++类似,但更简洁。它包括变量声明、数据类型(如整型、浮点型、字符型、布尔型以及引用类型...

    java工程师高薪面试宝典

    其次,深入理解JVM(Java虚拟机)工作原理至关重要。面试官通常会询问关于类加载机制、内存模型(堆、栈、方法区)、垃圾回收机制等方面的问题。了解JVM调优技术,如如何通过JDK工具分析和优化程序性能,也会让你在...

    java初级课件总结

    1. **Java简介**:讲解Java的历史,由Sun Microsystems(现为Oracle公司)开发,以及其“一次编写,到处运行”的哲学,解释了JVM(Java虚拟机)的角色。 2. **环境搭建**:包括如何安装JDK(Java Development Kit)...

    Java核心技术 卷II 高级特性(原书第9版)

    7. **Java虚拟机(JVM)**: - JVM内存模型,包括堆、栈、方法区等。 - 垃圾收集机制的深入分析,如常见的垃圾收集算法。 - JVM的调优和性能监控。 8. **Java 8及后续版本的新特性**: - Java 8引入的Lambda...

    Tu灵六期Java高级互联网架构师第6期

    - **JVM性能调优专题**:Java虚拟机(JVM)的性能直接影响到应用程序的运行效率。本部分将介绍JVM的工作机制以及如何对其进行调优。 #### 5. 分布式框架专题 - **分布式缓存技术Redis**:Redis是一种非常流行的内存...

    Java学习从入门到精通

    7. **JVM和内存管理**:理解Java虚拟机(JVM)的工作原理,包括类加载机制、内存区域(如堆、栈、方法区)以及垃圾回收机制,可以帮助优化代码性能。 8. **Java Swing和JavaFX**:这两者是Java的图形用户界面(GUI...

Global site tag (gtag.js) - Google Analytics