- 浏览: 3118028 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (372)
- diy (4)
- linux (19)
- 杂项 (30)
- Swing (21)
- Java2D (21)
- Java3D (5)
- JavaIO (9)
- Java通讯 (5)
- Java设计模式 (3)
- Java多媒体 (0)
- Java算法 (7)
- Spring&EJB (29)
- Javaoffice (4)
- web前端 (23)
- javascript (1)
- php基础 (1)
- eclipse (3)
- 网站相关 (3)
- Apache (4)
- seo (12)
- db (28)
- server (3)
- api (4)
- 异常 (12)
- 计算机网络词汇表 (3)
- 随想录 (52)
- 收藏 (17)
- 犹太人的智慧 (3)
- 多线程 (1)
- jfreechart (7)
- Test (1)
- SorLib (30)
- ruby on rails (1)
最新评论
-
houyutao:
二三四都是错的空字符串也被匹配,*应该改成+
Java中判断字符串是否为数字的五种方法 -
mingyun:
但是 java.util.ArrayList 实现了 remo ...
java.lang.UnsupportedOperationException 解决方案 -
mingyun:
1.因为 Arrays.asList 返回的是 Arrays内 ...
java.lang.UnsupportedOperationException 解决方案 -
leolu007:
用java8新特性String testStr = " ...
java.lang.UnsupportedOperationException 解决方案 -
zhaohuaxishiwzw:
我之前所在的项目就是日本一家证券公司的项目。完全使用的是j2e ...
抛弃EJB(EJB2.0,EJB3.0,EJB4.0)
今天在读java.awt.Toolkit类时,遇到了JIT,代码如下:
1.JIT的工作原理图
工作原理
当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码。
通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。
在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。
2.相关知识
JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。
JIT并不总是奏效,不能期望JIT一定能够加速你代码执行的速度,更糟糕的是她有可能降低代码的执行速度。这取决于你的代码结构,当然很多情况下我们还是能够如愿以偿的。
从上面我们知道了之所以要关闭JITjava.lang.Compiler.disable(); 是因为加快执行的速度。由于JIT对每条字节码都进行编译,造成了编译过程负担过重。为了避免这种情况,当前的JIT只对经常执行的字节码进行编译,如循环等。
/** * Gets the default toolkit. * <p> * If a system property named <code>"java.awt.headless"</code> is set * to <code>true</code> then the headless implementation * of <code>Toolkit</code> is used. * <p> * If there is no <code>"java.awt.headless"</code> or it is set to * <code>false</code> and there is a system property named * <code>"awt.toolkit"</code>, * that property is treated as the name of a class that is a subclass * of <code>Toolkit</code>; * otherwise the default platform-specific implementation of * <code>Toolkit</code> is used. * <p> * Also loads additional classes into the VM, using the property * 'assistive_technologies' specified in the Sun reference * implementation by a line in the 'accessibility.properties' * file. The form is "assistive_technologies=..." where * the "..." is a comma-separated list of assistive technology * classes to load. Each class is loaded in the order given * and a single instance of each is created using * Class.forName(class).newInstance(). This is done just after * the AWT toolkit is created. All errors are handled via an * AWTError exception. * @return the default toolkit. * @exception AWTError if a toolkit could not be found, or * if one could not be accessed or instantiated. */ public static synchronized Toolkit getDefaultToolkit() { if (toolkit == null) { try { // We disable the JIT during toolkit initialization. This // tends to touch lots of classes that aren't needed again // later and therefore JITing is counter-productiive. java.lang.Compiler.disable(); java.security.AccessController.doPrivileged( new java.security.PrivilegedAction() { public Object run() { String nm = null; Class cls = null; try { nm = System.getProperty("awt.toolkit", "sun.awt.X11.XToolkit"); try { cls = Class.forName(nm); } catch (ClassNotFoundException e) { ClassLoader cl = ClassLoader.getSystemClassLoader(); if (cl != null) { try { cls = cl.loadClass(nm); } catch (ClassNotFoundException ee) { throw new AWTError("Toolkit not found: " + nm); } } } if (cls != null) { toolkit = (Toolkit)cls.newInstance(); if (GraphicsEnvironment.isHeadless()) { toolkit = new HeadlessToolkit(toolkit); } } } catch (InstantiationException e) { throw new AWTError("Could not instantiate Toolkit: " + nm); } catch (IllegalAccessException e) { throw new AWTError("Could not access Toolkit: " + nm); } return null; } }); loadAssistiveTechnologies(); } finally { // Make sure to always re-enable the JIT. java.lang.Compiler.enable(); } } return toolkit; }
1.JIT的工作原理图
工作原理
当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码。
通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。
在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。
2.相关知识
JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。
JIT并不总是奏效,不能期望JIT一定能够加速你代码执行的速度,更糟糕的是她有可能降低代码的执行速度。这取决于你的代码结构,当然很多情况下我们还是能够如愿以偿的。
从上面我们知道了之所以要关闭JITjava.lang.Compiler.disable(); 是因为加快执行的速度。由于JIT对每条字节码都进行编译,造成了编译过程负担过重。为了避免这种情况,当前的JIT只对经常执行的字节码进行编译,如循环等。
发表评论
-
利用JFrame直接显示JFreeChart的图片
2012-06-12 16:38 5286核心代码就是要将一个JFreeChart 对象,写到Buffe ... -
控件位置可以配置的Swing桌面
2011-01-07 17:48 3036用过Wordpress或者Joomla的朋友一定对他们的灵活的 ... -
jfreechart jar包下载
2010-10-15 10:07 6909jfreechart 是java用于生成图表的开源工具包,网上 ... -
GradientPaint类的作用
2010-10-11 15:35 9842GradientPaint是Java2D中专门用来控制渐变的类 ... -
Swing控件(JPanel,Container等)设置背景图片
2010-09-16 11:07 11865Swing控件有直接设置背景颜色的方法,但没有直接设置背景图片 ... -
Java 2D 学习资料和API
2010-09-13 15:56 6675关键词:Java2D,坐标转换,渲染,坐标系,字体 ... -
Swing特效-渐显效果
2010-09-09 16:04 6255能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的 ... -
利用JFreeChart画坐标及曲线图
2010-09-07 16:54 9563关键词:Swing,JFreeChart,坐标,曲线图 运行以 ... -
Java2D特效 文字旋转
2010-09-03 17:12 2342将图形围绕某点按照给定的角度进行旋转 效果图: 源代码: ... -
Java图像缩放 图片缩放
2010-08-15 12:31 9037图像缩放是我们常常用到的一个操作,原理是数字图像处理的事,这里 ... -
类DirectColorModel的作用
2010-08-13 16:11 2942DirectColorModel 类别是使用像素值的 Colo ... -
Java图像渐变
2010-08-13 16:05 7426图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RB ... -
Java 给图片增加 水印图片 水印文字
2010-07-12 20:49 4305很多时候会用到给图片增加水印,这个时候我推荐利用“光影魔术手” ... -
Java图像变灰 及相关类ColorSpace,ColorConvertOp
2010-06-08 15:49 12652用Java进行图像处理,会遇到ColorSpace这个类:Co ... -
Java图像图片 边缘检测
2010-06-06 20:54 19792对图片进行边缘检测在很多领域是非常重要的,例如:车牌号码的识别 ... -
Java 图像钝化与锐化
2010-06-05 02:08 10318Java图像的钝化和锐化就是一个算法的问题,说白了就是两个方法 ... -
Java图片变亮 变暗
2010-06-05 01:42 4646Java在图片处理领域的功 ... -
Java加载图片 利用Image与BufferedImage
2010-06-04 13:14 50401Image是一个抽象列,BufferedImage是Image ... -
Swing显示图片
2010-06-02 17:48 32497Swing显示图片可以有很多的种选择,例如:可以用JLabel ... -
Java将大图片转成小图片
2010-05-14 16:46 7849我们经常会将一个小的图片变成小一些的图片,利用java可以方便 ...
相关推荐
以下是对JIT工作原理和相关知识的详细解释: 1. **JIT编译过程**: 当Java程序运行时,JVM首先会解释执行字节码。这个过程类似于读取一个指令集,然后逐条执行。然而,解释执行的效率相对较低,因为它需要在运行时...
Java现代编译原理是计算机科学中的一个重要领域,它涉及到如何将高级编程语言,如Java,转换为机器可...《Java现代编译原理》一书可能涵盖了这些主题,并提供了实用的案例和指导,对于深化Java编程知识是极好的资源。
Java虚拟机(JVM)是实现Java程序跨平台运行的关键技术,它的实现原理和工作过程是Java语言能够运行在各种不同硬件平台的基础。JVM的存在使得Java程序员可以编写一次代码,到处运行,这得益于JVM提供的一套平台无关...
### Android Framework介绍与...了解这些基础知识对于深入理解和开发Android应用程序至关重要。未来随着技术的发展,Android系统可能会继续进化,但其核心思想——提供高效、灵活且易于开发的环境——将始终保持不变。
《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...
### JAVA JVM原理资料知识点 #### 一、语言处理器的基本结构 **语言处理器**是指能够处理某种编程语言的工具,常见的包括编译器、解释器、IDE等。 1. **编译器的基本结构**: - **词法分析器**:将源代码分割成...
因此,Java的编译原理需要涵盖虚拟机、字节码和JIT优化等额外概念。 在“虎书-C语言描述.pdf”中,读者可以深入理解C语言编译器的实现细节,包括词法和语法分析的具体算法,以及如何生成和优化C语言的目标代码。而...
以下是关于Java虚拟机的一些详细知识点: 1. **JVM的构成**: JVM包含以下几个主要组件: - **类装载器(Class Loader)**:负责查找并加载Java类文件。 - **运行时数据区(Runtime Data Areas)**:包括方法区...
《现代编译原理Java语言描述》是一本深入探讨编译器设计的专著,它以Java语言为背景,系统地阐述了编译器构造的基本概念、技术和方法。编译原理是计算机科学的重要分支,它涉及如何将高级编程语言转换为机器可理解的...
### JAVA基础知识概述 #### 一、Java语言特点与体系结构 **Java** 是一种广泛使用的高级编程语言,因其强大的功能性和灵活性,在企业级应用、移动应用(尤其是Android平台)、Web应用等多个领域都有着不可替代的...
《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...
### Java运行原理与javap命令运行结果解析 #### 一、Java运行原理概述 Java是一种广泛使用的编程语言,它的程序可以在...以上就是关于Java运行原理及javap命令运行结果的相关知识点的详细介绍。希望对你有所帮助!
Java知识管理是一个广泛的领域,它涵盖了使用Java编程语言进行软件开发、维护和优化时所需的各种技术和实践。在Java的世界里,知识管理不仅涉及到语法、类库、框架,还包括设计模式、并发处理、内存管理、性能优化等...
理解JIT的工作原理和优化手段,可以提升程序性能。 8. **并行与并发**:JVM支持多线程并发,理解锁、同步、原子操作、线程池等概念,是构建高效并发程序的关键。 9. **字符串常量池**:理解字符串在JVM中的存储...
无论你是Java初学者还是经验丰富的开发者,了解JDK的内部机制和运作原理都将使你在编程道路上更加得心应手。随着Java技术的不断演进,Java 2 SDK虽已成为历史,但它留下的经验和教训,依然值得我们去学习和借鉴。
标题《Java虚拟机规范》主要关注点是Java虚拟机(JVM)的设计与工作原理,这包括对Java字节码的理解以及它如何在不同硬件和操作系统平台上实现跨平台的特性。规范中详细介绍了class文件的格式,这是Java源代码编译后...
本文将主要聚焦于“JAVAJAVA游戏论文”这一主题,深入探讨Java在游戏开发中的应用,以及相关的技术知识。 首先,Java 2 Micro Edition (J2ME) 是Java平台的一个子集,特别设计用于资源有限的嵌入式设备,如移动电话...
标题中提到了JVM原理、JVM调优、JVM内存模型和JAVA并发,这些都是Java虚拟机(JVM)相关的核心概念。JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而...
这些知识点对于Java初级面试者和初学者至关重要,涵盖了Java的基础概念、与其他语言的区别、平台特性、JVM的工作原理和内存管理,以及性能优化等方面。理解这些内容是成为一名合格的Java开发者的基础。
了解JVM的工作原理,包括内存管理(堆、栈、方法区)、垃圾收集机制(GC)、类加载器和优化策略(比如即时编译JIT),对于提高应用程序性能至关重要。JVM调优是每个Java开发者必备的技能,包括调整堆大小、设置GC...