JVM for Linux JIT诊断技术的简介是什么

技术JVM for Linux JIT诊断技术的简介是什么本篇文章为大家展示了JVM for Linux JIT诊断技术的简介是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

这篇文章给大家简单介绍了针对Linux JIT的JVM的JIT诊断技术,内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

要告诉你关于Linux JIT的JVM的JIT诊断当把一个Java程序从使用SunJDK的平台迁移到使用IBMJDK的平台时,重要的是要了解这两个厂商的JVM中使用的优化技术之间的差异,这些技术可能会影响程序,以及如何通过调整IBMJVM中可用的优化机制来获得更好的性能。

JVM for Linux JIT诊断简介

“只写一次,到处跑”的原则(WORA)只有在纯Javatrade的时候;仅当的字节码从一个平台的特定版本的Java虚拟机(JVM)移植到另一个不同平台的相同版本的JVM时。

然而,有时这个迁移过程并不是无缝的。影响迁移过程的一个因素是不同供应商的优化技术的内部实现之间的差异。

在将一个Java程序从使用SunJDK的平台迁移到使用IBMJDK的平台时,了解这两家厂商的JVM中使用的优化技术之间的差异很重要,这些差异可能会影响程序,以及如何通过调整IBMJVM中可用的优化机制来获得更好的性能。

本文主要针对JIT中遇到的问题进行诊断,这些问题可能会在从SunHotSpotJVM迁移到基于IBM JIT的JVM时遇到。

虽然本文介绍的大部分内容一般适用于IBM JVM 1 . 3 . 1和1.4.2,但它们尤其适用于IBM JVM 1 . 3 . 1和JVM1.4.2forLinux,包括POWER上的Linux和PowerPC架构。

在Sun的JVM1.3.1中,已经包含了JIT和HotSpot编译器,可以通过使用-server或-hotspot选项调用(默认为client HotSpotVM),JIT通过使用-classic选项调用,这是一个隐式的默认值。SunJDK1.4.1和更高版本的SunJDK,只能使用HotSpot。IBMJVM1.3.1和1.4.2使用JIT和MMI的组合,这是默认的运行模式,可以实现与HotSpot相同的功能。

JVM JIT和MMI

实时编译器被用来提高Java程序的性能。JIT是一个代码生成器,它将Java字节码转换成宿主平台的本地代码。使用JIT调用时,Java程序通常比使用解释器执行字节码时运行得更快。

当JVM启动时,许多方法被加载到JVM中并执行。

如果JIT被禁用,JVM会很快启动,但在大多数情况下,运行程序的速度会像解释字节码的速度一样慢。如果启用了JIT,但没有使用JIT的一些自适应优化机制,它会在启动时尝试编译所有方法。对于applet这样的小程序,当启动JVM的时间比运行程序的时间长时,可能会成为问题。

IBMJvmmixedModeExpressor(MMI)与JIT紧密集成,可以缓解这个问题。它可以用于与HotSpotVM相同的目的,将编译方法扩展到JVM的生命周期之外。在其他特性中,人机界面还可以计算特定方法被执行了多少次。为了实现均衡的性能,MMI对于IBMJVM支持的每个平台都有一个默认的上限计数器,这个计数器经过了仔细的选择和广泛的测试研究。

每次执行该方法时,MMI中该方法的上限计数器减少1。当方法的上限计数器达到零(0)时,可以使用JIT将方法编译成本地代码。因此,像HotSpotVM一样,经常使用的方法是mdashmdash“热点”mdashmdash会在启动JVM后由JIT编译,而低频使用的方法会在后面编译,或者可能在JVM进程的整个生命周期都不编译。

IBMJVM1.3.1和1.4.2还提供了一个非标准选项——Xquickstart,用于提高一些Java程序的启动时间。-Xquickstart选项导致优化选项的子集用于运行JIT;也就是快速编译的方法。此选项适用于短时间运行的程序,尤其是那些执行时间不集中在少数“热点”方法中的程序。如果在包含一些热点方法的长时间运行的程序上使用-Xquickstart选项,此选项可能会导致性能下降。

与其他非标准-X选项一样,-Xquickstart选项的实施和存在可能会在不通知的情况下进行修改。

可以减少MMI上限计数器,以加快方法的JIT编译。或者增加它来达到相反的效果。这是通过使用环境变量IBM_MIXED_MODE_THRESHOLD来实现的,与其他环境变量一样,它需要在运行JVM进程的shell实例中设置。自然,这个变量是在启动JVM进程之前设置的,对JVM中执行的所有方法都有效。

将IBM_MIXED_MODE_THRESHOLD设置为0可以禁用MMI,这样当* * *加载到JVM中时,所有方法都可以立即被JIT编译。

IBMJVM运行时模式如下:

MMI和JIT启用。

这是默认的IBM。

JVM设置。

◆MMI禁用,JIT启用

所有的方法都是在***运行之前编译的,即JVM的启动时间可能会很慢,但是后来的性能会很好。

◆MMI和JIT都禁用

JVM是一个纯解释系统。所有的代码都不会进行编译。禁用JIT同时还会自动禁用MMI,并将IBM_MIXED_MODE_THRESHOLD设置为0,这样可以有效地禁用MMI,但是不会禁用JIT。

MMI是一个非常有效的解释器,利用宿主平台上的程序集代码来达到***的优化。虽然JIT并不是JVM的一个集成部分,但却以一个共享库(libjitc)的形式提供了,它与MMI紧密地结合在一起,JIT和MMI是IBMJVM中紧密结合的两种技术。

在JavaHotSpotVM或经典的JIT模式中使用的是SunJVM1.3.1,Sun的JIT实现并不与IBM的JIT完全相同;SunHotSpotJVM1.4.1中根本没有JIT。当将Java程序从SunJVM1.3.1或SunJVM1.4.1迁移到IBMJVM上时,在一些非常罕见的情况中可能会出现问题,问题的范围从性能的下降,到代码会产生不正确的结果,以及JVM的挂起、崩溃和出现一些异常。

上述内容就是JVM for Linux JIT诊断技术的简介是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/44232.html

(0)

相关推荐

  • c语言圣诞树(c语言简单圣诞树编程)

    技术如何用C语言实现圣诞树这篇文章主要介绍“如何用C语言实现圣诞树”,在日常操作中,相信很多人在如何用C语言实现圣诞树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用C语言实现圣诞树”

    攻略 2021年12月22日
  • iOS如何实现应用退出场景

    技术iOS如何实现应用退出场景这篇文章主要介绍了iOS如何实现应用退出场景,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。场景描述:应用处于运行状态(即Ac

    攻略 2021年10月21日
  • ai怎么画三角形,AI里怎么画圆角三角形

    技术ai怎么画三角形,AI里怎么画圆角三角形方法ai怎么画三角形:1、打开ai ctrl+n新建文件 选择“多边形工具”。
    2、在画板上按住左键画形状,默认出现的是五边形,按住左键不松手,同时点击“向下的方向键”每点

    生活 2021年10月24日
  • activity流程id存在哪张表(两个activity之间跳转执行什么方法)

    技术Activity的singleTask怎么使用这篇文章主要讲解了“Activity的singleTask怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Acti

    攻略 2021年12月18日
  • k8s运维06-kubectl delete node的过程是怎么样的

    技术k8s运维06-kubectl delete node的过程是怎么样的这期内容当中小编将会给大家带来有关k8s运维06-kubectl delete node的过程是怎么样的,文章内容丰富且以专业的角度为大家分析和叙

    攻略 2021年10月20日
  • 如何解决红杉离线备份的相关问题

    技术Sequoiadb backupOffline相关问题怎么解决这篇文章主要介绍“Sequoiadb backupOffline相关问题怎么解决”,在日常操作中,相信很多人在Sequoiadb backupOfflin

    攻略 2021年12月22日