jit相关内容

JIT 编译的代码在哪里?

所以我有这个方法,用Java写的: public void myMethod(int y){整数 x = 5 + y;做某事(x);} 假设我的应用程序调用了很多次.. 在 Java 虚拟机上运行此方法的编译代码时,JVM 将首先解释该方法.然后过了一段时间,如果我理解正确,它将决定将其编译为机器语言. 此时, 会被内存中的机器码覆盖吗?如果它被覆盖,大小差异的问题将如何解决 ..
发布时间:2022-01-16 12:43:00 Java开发

JVM/JAVA 中的预取指令

是否有 Java 语言或 JVM 中的软件预取指令,例如 __builtin_prefetch 在 GCC 中可用 解决方案 Hotspot JVM 实际上确实支持预取! 它将 Unsafe.prefetchRead() 和 Unsafe.prefetchWrite() 方法视为内在函数,并将它们编译为相应的 CPU 指令. 很遗憾,sun.misc.Unsafe 没有声明此类方法 ..
发布时间:2022-01-16 12:35:59 Java开发

为特定方法/类禁用 Java JIT?

我在我的 Java 应用程序中遇到了 JIT 破坏代码的问题.如果我禁用 JIT,一切正常,但运行速度会慢 10-20 倍. 有什么方法可以禁用特定方法或类的 JIT? 编辑:我正在使用 Ubuntu 10.10,得到相同的结果: OpenJDK 运行时环境 (IcedTea6 1.9) (6b20-1.9-0ubuntu1)OpenJDK 64 位服务器 VM(内部版本 17.0- ..
发布时间:2022-01-16 12:27:57 Java开发

桌面上的 JVM 是否使用 JIT 编译?

我总是遇到声称 Java 被解释的文章.我知道 Oracle 的 HotSpot JRE 提供即时编译,但是对于大多数桌面用户来说是这样吗?例如,如果我通过以下方式下载 Java:http://www.java.com/en/download,这会包括 JIT 编译器吗? 解决方案 是的,绝对的.声称 Java 是解释型的文章通常由不了解 Java 工作原理或不了解解释型含义的人撰写. ..
发布时间:2022-01-16 12:25:43 Java开发

反汇编 Java JIT 编译的原生字节码

有没有办法对 Java 即时编译器生成的本机代码进行汇编转储? 还有一个相关的问题:有没有什么方法可以在不运行 JVM 的情况下使用 JIT 编译器将我的代码编译为本机代码? 解决方案 是的,有一种打印生成的本机代码的方法(需要 OpenJDK 7). 不,没有办法使用 JDK 的 JIT 将 Java 字节码编译为本机代码并将其保存为本机可执行文件. 即使这是可能的,它 ..
发布时间:2022-01-16 12:23:38 Java开发

有没有办法关闭 JIT 编译器,这样做会影响性能吗?

JIT 对 Java 程序意味着什么?它是否使执行速度更快?或者是否有不是 JIT 的字节码? 解决方案 有两种方法可以禁用 JIT -Djava.compiler=NONE 否则这几乎不会编译任何东西 -XX:CompileThreshold=2000000000 或在 IBM JVM 上 -nojit 禁用 JIT 会大大降低您的代码速度,例如50 倍,但并非总是如此.如果 ..
发布时间:2022-01-16 12:16:31 其他开发

-XX:-TieredCompilation 究竟是做什么的?

使用 java -XX:+PrintFlagsFinal 我找到了 TieredCompilation 标志,并在网上阅读了一下. 然而,我仍然不知道确切将它设置为 false 时会发生什么. 我知道编译系统支持5个执行级别,基本上分为解释器、C1和C2: 0 级 - 口译员 1 级 - 完全优化的 C1(无分析) 2 级 - C1 带调用和后端计数器 3 级 - 具有完整 ..
发布时间:2022-01-16 12:11:22 Java开发

JIT 自动内联的方法的大小是多少?

我听说 JIT 会自动内联小方法,例如 getter(它们大约有 5 个字节).边界是什么?有JVM标志吗? 解决方案 HotSpot JIT 内联策略比较复杂.它涉及许多启发式方法,如调用方方法大小、被调用方方法大小、IR 节点数、内联深度、调用数、调用站点数、抛出数、方法签名等. 访问器方法(getter/setter)和普通方法(字节码计数小于 6)会跳过一些限制. 相关 ..
发布时间:2022-01-16 12:05:18 Java开发

Java JIT 在运行 JDK 代码时会作弊吗?

我正在对一些代码进行基准测试,但我无法让它像使用 java.math.BigInteger,即使使用完全相同的算法.所以我复制了 java.math.BigInteger 源代码到我自己的包中并尝试了这个: //import java.math.BigInteger;公共类 MultiplyTest {公共静态无效主要(字符串[]参数){随机 r = 新随机(1);长 tm = 0,计数 = 0 ..
发布时间:2022-01-16 11:58:33 Java开发

即时编译和堆栈替换之间的区别

他们几乎都做同样的事情.确定该方法是热的并编译它而不是解释.使用 OSR,您只需在编译后立即转到已编译的版本,这与 JIT 不同,后者在第二次调用方法时调用已编译的代码. 除此之外,还有其他区别吗? 解决方案 一般来说,Just-in-time编译是指在运行时编译原生代码并执行它而不是(或除了) 口译.一些虚拟机,比如 Google V8,甚至没有解释器;他们 JIT 编译每个被执行 ..
发布时间:2022-01-16 11:50:30 Java开发

当 JVM 无法到达安全点时如何获取 Java 堆栈

我们最近遇到了一种情况,我们的一个生产 JVM 会随机冻结.Java 进程正在消耗 CPU,但所有可见活动都将停止:没有日志输出、没有任何内容写入 GC 日志、没有对任何网络请求的响应等.进程将一直保持这种状态,直到重新启动. 事实证明,当在某些输入上调用 org.mozilla.javascript.DToA 类时,会感到困惑并以巨大的值(例如 5^2147483647)调用 BigInt ..
发布时间:2022-01-16 10:17:45 其他开发

JCuda中的JIT,加载多个ptx模块

我在 这个问题中说过我有一些在 JCuda 中加载 ptx 模块时出现问题,在 @talonmies 的想法之后,我实现了他的解决方案的 JCuda 版本来加载多个 ptx 文件并将它们作为单个模块加载.这是代码的相关部分: 导入静态 jcuda.driver.JCudaDriver.cuLinkAddFile;导入静态 jcuda.driver.JCudaDriver.cuLinkComple ..
发布时间:2022-01-10 16:01:14 其他开发

是否有任何 JVM 的 JIT 编译器生成使用矢量化浮点指令的代码?

假设我的 Java 程序的瓶颈确实是一些紧密循环来计算一堆矢量点积.是的,我已经分析过了,是的,它是瓶颈,是的,它很重要,是的,算法就是这样,是的,我已经运行 Proguard 来优化字节码,等等. 这项工作本质上是点积.如,我有两个 float[50] ,我需要计算成对产品的总和.我知道处理器指令集的存在是为了快速批量执行此类操作,例如 SSE 或 MMX. 是的,我可以通过在 JN ..
发布时间:2022-01-09 10:13:30 Java开发

在 x86 机器码中调用绝对指针

在 x86 机器代码中调用绝对指针的“正确"方法是什么?有没有什么好方法可以在一条指令中做到这一点? 我想要做什么: 我正在尝试构建一种基于“子例程线程"的简化迷你 JIT(静止).它基本上是字节码解释器的最短可能步骤:每个操作码都被实现为一个单独的函数,因此每个基本字节码块都可以“JITted"到它自己的新程序中,如下所示: {序言}调用{操作码过程 1}调用{操作码过程2}调用{ ..
发布时间:2022-01-06 12:18:23 其他开发

如何从内核树中构建 BPF 程序

内核在samples/bpf 中提供了许多示例.我有兴趣在树之外构建一个示例,就像我们构建一个内核模块一样,其中 Makefile 可以很简单.可以对 bpf 做同样的事情吗?我通过从 samples/bpf/Makefile 中删除不必要的部分并保持对 libbpf 和其他人的依赖来尝试它,但结果证明并不是那么容易. 例如,尝试在内核树之外构建samples/bpf/bpf_tcp_ker ..
发布时间:2022-01-04 22:45:06 其他开发

为 PyPy 的 JIT 编写快速代码的指南

PyPy 的 JIT 可以使 Python 代码的执行速度比 CPython 快得多.是否有一组编写代码的指南,可以通过 JIT 编译器更好地优化?例如,Cython 可以将一些静态代码编译成 C++,并且它有指南来编写高效的代码.PyPy 有没有一套好的做法?我知道 PyPy 项目有关于在编写自己的 JIT-enabled 时包含提示的指南其他动态语言的解释器,但这与框架的大多数最终用户无关,他 ..
发布时间:2022-01-04 21:53:01 Python

即时编译与提前编译相比有哪些优势?

我最近一直在思考,在我看来,JIT 编译的大部分优势应该或多或少地归功于中间格式,而 jitting 本身并不是一种生成代码的好方法. 所以这些是我经常听到的主要 pro-JIT 编译论点: 即时编译允许更大的可移植性.这不应该归功于中间格式吗?我的意思是,一旦你在你的机器上安装了虚拟字节码,没有什么能阻止你将它编译成本地字节码.可移植性是“分发"阶段的问题,而不是“运行"阶段的问题. ..
发布时间:2022-01-04 21:21:18 其他开发

即时 (JIT) 编译器有什么作用?

与非 JIT 编译器相比,JIT 编译器具体做什么?谁能给出一个简洁易懂的描述? 解决方案 JIT 编译器在之后运行,并动态编译代码(通常是字节码或某种 VM 指令)(或称为即时)转换为通常更快的形式,通常是主机 CPU 的本机指令集.JIT 可以访问动态运行时信息,而标准编译器则不能,并且可以进行更好的优化,例如内联经常使用的函数. 这与传统编译器形成对比,传统编译器将所有代码编译 ..
发布时间:2022-01-04 21:10:13 其他开发

输出 -1 成为循环中的斜线

令人惊讶的是,以下代码输出: /-1 代码: 公共类 LoopOutPut {公共静态无效主(字符串 [] args){LoopOutPut loopOutPut = new LoopOutPut();for (int i = 0; i 0) ;字符串值 = i + "";如果(!value.equals(“-1")){System.out.println(value);System.ou ..
发布时间:2021-12-26 18:38:12 Java开发