Unsafe

109 阅读1分钟

获取Unsafe

Unsafe类为一单例实现,提供静态方法getUnsafe获取Unsafe实例,只能被由BootstrapClassLoader加载器加载的类所使用。

方式一:反射

// 通过反射得到theUnsafe对应的Field对象
Field field = Unsafe.class.getDeclaredField("theUnsafe");
// 设置该Field为可访问
field.setAccessible(true);
// 通过Field得到该Field对应的具体对象,传入null是因为该Field为static的
Unsafe unsafe = (Unsafe) field.get(null);```
java -Xbootclasspath/a: ${path}   // 其中path为调用Unsafe相关方法的类所在jar包路径 

方法二: 把要获取Unsafe实例的类所在jar包路径追加到默认的bootstrap路径中

java -Xbootclasspath/a: ${path}   // 其中path为调用Unsafe相关方法的类所在jar包路径