有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的本机方法

我花了一些时间学习什么是Java本机方法,以及它们是在依赖于平台的代码(主要是C)中实现的

但是我在哪里可以找到那些Java的本机实现呢?Thread类的sleep(long-millis)方法是本机的。但它的实现代码在哪里


共 (5) 个答案

  1. # 1 楼答案

    本机代码在JVM(Java虚拟机)中实现。Java开发人员不必担心它们的实现,因为它们与虚拟机的内部工作相关。但是,您可以使用JNI编写自己的本机方法,或者查看如何为特定JVM实现它们

  2. # 2 楼答案

    But where can I find those native implementations of Java?

    您必须下载一些JDK的完整源代码。例如,在OpenJDK中,您会发现许多与线程相关的文件:

    ./jdk/src/share/native/java/lang/Thread.c
    
  3. # 3 楼答案

    这些代码的实现在OpenJDK的源代码中,位于github.com/openjdk/jdk

    java.lang.Runtime的示例:

    垃圾收集方法System.gc()的本机代码:

    JNIEXPORT void JNICALL
    Java_java_lang_Runtime_gc(JNIEnv *env, jobject this)
    {
        JVM_GC();
    }
    
    JVM_ENTRY_NO_ENV(void, JVM_GC(void))
      JVMWrapper("JVM_GC");
      if (!DisableExplicitGC) {
        Universe::heap()->collect(GCCause::_java_lang_system_gc);
      }
    JVM_END
    

    参考文献

  4. # 4 楼答案

    您可以在JRE的源代码中找到这些函数的实现。例如,OpenJDK 6的源代码是here