【问题标题】:Does the JVM JIT generate syscall instructions?JVM JIT 是否生成系统调用指令?
【发布时间】:2019-05-10 11:25:44
【问题描述】:

我想知道 Java 代码是如何进行系统调用的,JIT 编译器是直接生成系统调用指令,还是只是调用 libc 函数(或其他基本库函数)?

【问题讨论】:

  • 你需要指定一个特定的JVM,比如HotSpot。也就是说,大多数人会使用 libc 调用。
  • 谢谢。不使用 libc 的 JVM 你知道吗?
  • Java 代码不直接使用libc,并且有些基于硬件的 JVM 可能没有 libc。
  • “不直接使用libc”的意思是“但归根结底”?现在我不关心基于硬件的 JVM...

标签: java linux jvm system-calls jit


【解决方案1】:

Hotspot JVM 为 Java 代码生成机器代码(不支持进行系统调用)。

进行系统调用的所有代码都在本机方法中。

因此,当 Java 想要进行系统调用时,您必须调用一些本机代码来为您完成。

您可以使用一些库来包装本机调用。例如。 JNA 和 JNR-FFI。这允许您调用 c 库而无需编写本机代码。

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2011-02-04
    相关资源
    最近更新 更多