The JVM Tool Interface (JVMTI) contains extensive facilities to query the internals of a JVM, including facilities to monitor and modify a running Java program. These low level facilities require the use of the Java Native Interface (JNI) and C Language language programming.
The JVMTI provides access to fields that would normally be inaccessible. Also, there There are also facilities that change the behavior of a running Java program (for example, threads can be suspended or stopped). JVMTI profiling tools can measure the time that a thread takes to execute, leaving applications vulnerable to timing attacks.
...