7

我在打开的 JDK(System.c 文件)中找到了这些

static JNINativeMethod methods[] = {
    {"currentTimeMillis", "()J",              (void *)&JVM_CurrentTimeMillis},
    {"nanoTime",          "()J",              (void *)&JVM_NanoTime},
    {"arraycopy",     "(" OBJ "I" OBJ "II)V", (void *)&JVM_ArrayCopy},
};

#undef OBJ

JNIEXPORT void JNICALL
Java_java_lang_System_registerNatives(JNIEnv *env, jclass cls)
{
    (*env)->RegisterNatives(env, cls,
                            methods, sizeof(methods)/sizeof(methods[0]));
}

但我无法找到这些函数 currentTimeMillis nanoTime arraycopy 的本地实现

表单在哪里可以获得这些功能的本机实现?这在开放的JDK中可用吗?

4

1 回答 1

5

如果在

jdk7/hotspot/src/share/vm/prims/jvm.cpp:229

JVM_LEAF(jlong, JVM_CurrentTimeMillis(JNIEnv *env, jclass ignored))
 JVMWrapper("JVM_CurrentTimeMillis");
 return os::javaTimeMillis();
JVM_END

真正的实现(对于linux)在

/jdk7/hotspot/src/os/linux/vm/os_linux.cpp

其他方法就在它下面

于 2011-08-23T16:12:31.410 回答