我在打开的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中可用吗?
答案 0 :(得分:4)
如果在
中找到它JDK7 /热点/ SRC /共享/ 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
其他方法就在它下面