Unsafe
顾名思义,不安全的类。
通过这个类可以手动操控内存、线程,如果使用不当,会造成内存泄露,甚至JVM崩溃。
获取unsafe
unsafe
的构造器是私有的,无法通过new
来获得unsafe
对象。
可以通过反射来获取。
Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe");
unsafeField.setAccessible(true);
Unsafe unsafe = (Unsafe) unsafeField.get(null);
操控基本类型
// allocate Memory
long address = unsafe.allocateMemory(8L);
// put value
unsafe.putInt(address,10);
int num = unsafe.getInt(address);
System.out.println(num);
// free
unsafe.freeMemory(address);
System.out.println(unsafe.getAddress(address))