返回顶部
首页 > 资讯 > 操作系统 >JVM for Linux JIT诊断技术的简介是什么
  • 329
分享到

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

2023-06-17 14:06:25 329人浏览 八月长安
摘要

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

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

向大家描述一下JVM for Linux JIT诊断,在将一个Java程序从使用Sunjdk的平台迁移到使用IBMJDK的平台上时,重要的是要了解在这两个供应商的JVM中使用的优化技术之间的差异,这些差异可能会对程序产生影响,以及如何通过调节IBMJVM中可用的优化机制来获得更好的性能。

JVM for Linux JIT诊断简介

“一次编写,到处运行”(WORA)的原则只有在将纯Java™的字节码从一个平台的某个特定版本的Java虚拟机(JVM)移植到另外一个不同平台上完全相同版本的JVM上时才适用。

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

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

本文着重介绍对于在JIT中碰到的问题的诊断,在从SunHotSpotJVM迁移到IBM基于JIT的JVM时可能会碰到这些问题。

虽然本文中介绍的大部分内容对于IBMJVM1.3.1和1.4.2都是普遍适用的,但是尤其适用于IBMJVM1.3.1和JVM1.4.2forLinux,包括POWER和Powerpc架构上的Linux。

在Sun的JVM1.3.1中,JIT和HotSpot编译器都已经包含其中了,可以使用-server或-hotspot选项(默认为客户机HotSpotVM)来调用,使用-classic选项调用JIT,-hotspot选项是隐含的默认值。在SunJDK1.4.1及之后的版本中,只能使用HotSpot了。IBMJVM1.3.1和1.4.2使用了JIT和MMI的组合,这是默认的运行模式,可以实现与HotSpot相同的功能。

JVM JIT和MMI

用来提高Java程序性能的工具是Just-In-Time(JIT)编译器。JIT是一个代码生成器,它将Java字节码转换成宿主平台的本地代码。Java程序使用JIT调用时的运行速度通常都比使用解释程序执行字节码时的速度更快。

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

如果JIT被禁用了,那么JVM启动会很快,但是在大部分情况中,运行程序的速度都会与解释字节码的速度一样慢。如果JIT被启用了,但是并没有使用JIT的一些自适应式优化机制,就会试图在启动时对所有方法进行编译。对于诸如applet之类的小程序来说,当启动JVM的时间长于运行程序的时间时,就可能会成为问题。

IBMJVMMixedModeInterpreter(MMI)与JIT紧密地结合在一起,它可以减轻这个问题。它可以用于与HotSpotVM相同的目的,将编译方法延伸到JVM的生命期之外。除了其他特性之外,MMI还可以计算一个特定的方法被执行了多少次。为了达到平衡的性能,MMI对于IBMJVM支持的每种平台都有一个默认的上限计数器,这是经过仔细选择的,并经过了广泛的测试和研究。

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

IBMJVM1.3.1和1.4.2还为改进某些Java程序的启动时间而提供了一个非标准的选项-Xquickstart。-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都启用

这是默认的IBMJVM设置。

◆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诊断技术的简介是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网操作系统频道。

--结束END--

本文标题: JVM for Linux JIT诊断技术的简介是什么

本文链接: https://lsjlt.com/news/289552.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JVM for Linux JIT诊断技术的简介是什么
    本篇文章为大家展示了JVM for Linux JIT诊断技术的简介是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。向大家描述一下JVM for Linux JIT诊断,在将一个Java程序从使...
    99+
    2023-06-17
  • 如何理解JVM for Linux JIT诊断技术
    如何理解JVM for Linux JIT诊断技术,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JVM有很多值得学习的地方,简要介绍Just-In-Time(JIT)编译器...
    99+
    2023-06-17
  • 什么是Linux的虚拟化技术
    Linux的虚拟化技术是一种在Linux操作系统上运行的技术,可以将一个物理服务器分割成多个独立的虚拟服务器,每个虚拟服务器可以运行...
    99+
    2024-03-13
    Linux
  • Linux中容器技术的原理是什么
    今天就跟大家聊聊有关Linux中容器技术的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.1 隔离和共享在一个多员共用的开发环境或者一台服务器运行多个逻辑隔离的服务器进程...
    99+
    2023-06-15
  • Linux 容器技术一览表是什么样的
    Linux 容器技术一览表是什么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。容器是现在非常火的概念,基本上技术圈里的人都在谈,但其实容器技术的概念可以追溯...
    99+
    2023-06-06
  • PHP缓存技术在Linux面试中的作用是什么?
    在当前互联网时代,PHP作为一种常用的Web编程语言,其在应用程序开发中得到了广泛的应用。然而,由于PHP语言本身的特点,其性能并不是很高,经常会出现响应时间慢、负载高等问题。为了解决这些问题,PHP缓存技术应运而生。本文将介绍PHP缓存...
    99+
    2023-09-14
    缓存 面试 linux
  • PHP 框架开发技术:Linux 上的最佳实践是什么?
    PHP是一种广泛使用的服务器端脚本语言,因其易用性和灵活性而受到广泛欢迎。在使用PHP进行Web开发时,PHP框架是一种非常有用的工具,可以帮助开发人员更快地构建功能丰富的Web应用程序。 在Linux上开发PHP框架需要遵循最佳实践,以确...
    99+
    2023-09-09
    框架 开发技术 linux
  • Java框架和Linux:同步的新趋势和技术是什么?
    在当今的软件开发领域中,Java框架和Linux已经成为了最为流行的技术之一。Java作为一种高级编程语言,以其跨平台、面向对象、安全性高等特点备受关注。而Linux则是一款开源的操作系统,以其稳定性、安全性、高效性等特点广受好评。那么,...
    99+
    2023-09-18
    框架 linux 同步
  • Linux 开发技术中的 PHP 缓存优化策略是什么?
    在 Web 开发中,PHP 是一种非常流行的编程语言,但是在高并发环境下,性能问题是不可避免的。一个常见的性能瓶颈是数据库查询。为了解决这个问题,可以使用缓存技术来减少数据库查询次数。本文将介绍 Linux 开发技术中的 PHP 缓存优化...
    99+
    2023-08-18
    缓存 linux 开发技术
  • 为什么 PHP、Spring、Bash 和 Linux 是现代应用程序开发的关键技术?
    现代应用程序开发涵盖了许多不同的技术和工具,但其中一些特定的技术已经成为了几乎所有应用程序开发的关键技术。在本文中,我们将探讨 PHP、Spring、Bash 和 Linux 为什么是现代应用程序开发的关键技术,并且演示一些相关的代码。 P...
    99+
    2023-07-30
    spring bash linux
  • 为什么 ASP、Linux、NumPy 和 Spring 是当今最受欢迎的 Web 开发技术之一?
    在当今这个数字化时代,Web 开发技术得到了广泛应用和发展。而其中,ASP、Linux、NumPy 和 Spring 成为了最受欢迎的技术之一。那么,为什么它们如此受欢迎?本文将从各自的特点和优势入手,为您解答这一问题。 一、ASP技术 A...
    99+
    2023-10-19
    linux numy spring
  • Linux系统下Java分布式索引的技术难点和解决方案是什么?
    随着大数据时代的到来,对于海量数据的处理和分析成为了非常重要的任务。而分布式索引技术的出现,则为海量数据的搜索和分析提供了很好的支持。在Linux系统下,Java作为一门流行的编程语言,也被广泛应用于分布式索引系统的开发中。但是,在分布式...
    99+
    2023-08-24
    分布式 索引 linux
  • Linux操作系统存储子系统核心技术中的硬盘与RAID是什么意思
    这篇文章将为大家详细讲解有关Linux操作系统存储子系统核心技术中的硬盘与RAID是什么意思,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Linux操作系统的存储子系统应该是Linux中最为...
    99+
    2023-06-15
  • ASP、Linux、NumPy 和 Spring:在 Web 开发中使用这些技术的优点和缺点是什么?
    在当今的 Web 开发中,有许多技术可以使用。其中,ASP、Linux、NumPy 和 Spring 是一些最常用的技术。每种技术都有其优点和缺点。本文将探讨这些技术在 Web 开发中的优点和缺点,并提供一些演示代码来说明这些技术的使用。 ...
    99+
    2023-10-19
    linux numy spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作