examples
-
VM “intrinsification.” ie CAS (Compare-And-Swap) used in Lock-Free Hash Tables
eg:sun.misc.Unsafe.compareAndSwapInt
it can make real JNI calls into native code that contains special instructions for CASread more about CAS here http://en.wikipedia.org/wiki/Compare-and-swap
-
The sun.misc.Unsafe functionality of the host VM can be used to allocate uninitialized objects and then interpret the constructor invocation as any other method call.
-
One can track the data from the native address.It is possible to retrieve an
object’s memory address using the java.lang.Unsafe class, and operate on its fields directly via unsafe get/put methods! -
Compile time optimizations for JVM. HIgh performance VM using “magic”, requiring low-level operations. eg: http://en.wikipedia.org/wiki/Jikes_RVM
-
Allocating memory, sun.misc.Unsafe.allocateMemory eg:- DirectByteBuffer constructor internally calls it when ByteBuffer.allocateDirect is invoked
-
Tracing the call stack and replaying with values instantiated by sun.misc.Unsafe, useful for instrumentation
-
sun.misc.Unsafe.arrayBaseOffset and arrayIndexScale can be used to develop arraylets,a technique for efficiently breaking up large arrays into smaller objects to limit the real-time cost of scan, update or move operations on large objects
-
http://robaustin.wikidot.com/how-to-write-to-direct-memory-locations-in-java
more on references here – http://bytescrolls.blogspot.com/2011/04/interesting-uses-of-sunmiscunsafe.html