当前位置: 首页 > 面试题库 >

反汇编Java JIT编译的本机字节码

太叔望
2023-03-14
问题内容

有什么方法可以对Java即时编译器生成的本机代码进行汇编转储吗?

和一个相关的问题:是否有任何方法可以使用JIT编译器而无需运行JVM将我的代码编译为本地机器代码?


问题答案:

是的,有一种方法可以打印生成的本机代码(需要OpenJDK
7)。

不,无法使用JDK的JIT将Java字节码编译为本地代码并将其另存为本地可执行文件。

即使这是可能的,它也可能没有您想象的有用。JVM进行了一些非常复杂的优化,甚至可以在必要时动态取消对代码的优化。换句话说,它不像JIT那样简单地将代码编译为本地机器语言,然后在程序运行时该本地机器语言将保持不变。同样,这也不允许您制作独立于JVM和运行时库的本机可执行文件。



 类似资料:
  • 导航 目录 上一章:Lua 与 C/C++ 交互 下一章:LuaJIT 介绍

  • 问题内容: 如果我有一个字节变量: 为什么以下工作: …但这不是吗? 编译器第一理解为第二吗? [编辑] 我知道演员,但我想提请您注意 我认为它们是平等的,那么为什么编译器会有所不同呢?之间有什么区别 问题答案: 因为是的等效项,而的类型被提升为(JLS§5.6.2二进制数值提升),因此,如果不进行显式转换,则不能将其结果分配给它。 根据JLS,§15.26.2复合赋值运算符: 形式为E1 op

  • 我有一个关于JVM(Java虚拟机)和JIT(即时)的问题。据我所知,JVM将一个字节码(来自. class扩展文件)作为输入并解释这个字节码。问题是: 当我们说解释时,是指将此字节码转换为机器可读代码(否则编译)? 因此,如果JVM将字节码“编译”为机器可读代码和JIT做基本相同的事情(将字节码转换为机器可读代码(否则编译)),那么使用JIT的优势是什么? 谢谢你的回答。

  • 说实话绝影就等着张厂长把他的研究成果公布出来,这样才能当场找出其中的纰漏并当场将他驳回。你想我绝影做到这里能弄出个反汇编器来,已经是突破性进展了,张厂长还能比我牛? 于是他平静地说:"说来听听,看看你有啥好法子。" 张厂长哪里知道绝影心里的算盘,他还是和平时一样一本正经严肃认真一丝不苟地说道:"这几天我去他们车间调研了,其实开始我们都想复杂了。他们的芯片和主机通过穿口通信,类似于一问一答……" "

  • 我目前运行的是64位Windows10,我不断得到一个反编译问题与MCP。 这就是不断发生的事情: “反编译失败”有什么帮助吗?我已经看过以前关于如何通过添加java参数以允许更多RAM到MCP来解决这个问题的线程,但是到目前为止,这些方法对我来说都不起作用,它们可能是过时的方法。

  • 我已经决定使用MCP并下载了它,但是,当运行decompile.bat时,它返回一个错误。 (我正在运行32位Windows 10)