Cómo ver la implementación de métodos locales en java
/* Registre solo los métodos críticos para el rendimiento */
métodos estáticos JNINativeMethod[] = {
{"currentTimeMillis", "()J", (void *)&JVM_CurrentTimeMillis},
{"nanoTime", "()J",(void *)&JVM_NanoTime},
{"arraycopy", "(" OBJ "I" OBJ "II")V", (void *)&JVM_ArrayCopy},
};
La implementación del método debe estar en la parte JVM, la ruta es openjdk -7-fcs-src-b147\hotspot\src\share, la implementación de diferentes Los sistemas operativos son diferentes, debería estar en el correspondiente En el paquete del sistema operativo, encontré la implementación de nanosegundos en el directorio de Windows
jlong os::javaTimeNanos() {
if (!has_ performance_count) {
return javaTimeMillis() * NANOS_PER_MILLISEC; // lo mejor que podemos hacer.
} else {
LARGE_INTEGER current_ count;
QueryPerformanceCounter(¤t_count) ;
doble corriente = as_long(current_count);
doble frecuencia = rendimiento _frecuencia;
jlong tiempo = (jlong)((actual/frecuencia) * NANOS_PER_SEC );
tiempo de retorno;
}
}
Esto es más interesante de ver.
Esto es lo mejor que podemos hacer
Soy demasiado vago para buscar más detalles. No tengo un entorno aquí, no hay IDE. , si hay alguno, puedo encontrarlo con unos pocos clics. Conclusión final: performance_frequency,QueryPerformanceCounter;
Esta es una función API de Windows C. En cuanto a esta función, busque en Google