Hice un código fuente para cavar y codificar yo mismo para resolver esto, y esto es lo que descubrí:
La clase 'Método' de Java tiene una variable miembro 'methodAccessor' de tipo 'MethodAccessor' que es una interfaz con un método 'invoke', similar a la invocación de Method. Métodos invocan delegados a la invocación de methodAccessor.
Si la inflación está habilitada (noInflación es falsa) este acceso apunta a una implementación que usa JNI para ejecutar este método Java (creo que usando api como GetObjectClass, GetMethodID y Call * Method). Esto es como el envío en duelo, y la ejecución con JNI es lenta debido a esta y otras razones. (What makes JNI calls slow?)
Después de 15 ejecuciones de un método a través de la reflexión ('15' es de forma predeterminada y se puede cambiar) y con noInflation falso, el descriptor de acceso basado JNI crea una clase sobre la marcha (el nombre es generado dinámicamente, por ejemplo, diga 'GeneratedMethodAccessor1') que también tiene el método de invocación. Ahora, dentro de este método 'invocar', lanza el primer argumento 'obj' a su clase correspondiente, y luego llama al método objetivo sobre él. A continuación, crea una instancia de esta clase y cambia las configuraciones de methodAccessor de modo que cada ejecución del método en adelante se delegue a esta instancia en lugar de acceso JNI. Esto se llama inflación.
Como esta instancia corresponde a una clase Java que delega en un objeto Java, la delegación en adelante es una delegación Java normal. Nunca va a JNI y, por lo tanto, ahorra esa sobrecarga, además de que JITC puede realizar otras optimizaciones debido a lo cual se vuelve eficiente.
El inconveniente es que si se inflan muchos métodos de esta manera, sus clases ocupan espacio permgen y posiblemente causen un error de memoria insuficiente.
Para más detalles, ver:
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/sun/reflect/ReflectionFactory.java
http://java.sun.com/docs/books/jni/html/fldmeth.html
http://anshuiitk.blogspot.com/2010/11/excessive-full-garbage-collection.html
Muy buena explicación, gracias – ozhan
@Ozhan Duz contento de que le haya gustado. Gracias. – shrini1000