前段时间因为看JUC的源码,里面有大量关于unsafe的操作,所以就来看看了.写点笔记总结下(本文基于jdk1.8):
unsafe可以帮我们直接去操作硬件资源,当然了是借助java的jit来进行的...,官方不推荐使用,因为不安全,例如你使用unsafe创建一个超级大的数组,但是这个数组jvm是不管理的,只能你自己操作,容易oom,也不利于资源的回收....content.length,null,null);
c.getMethod("getId").invoke(c.newInstance(), null);
/**
* 内存操作
* 可以在Java...packThread.start();
TimeUnit.SECONDS.sleep(1);
//注释掉下一行后,线程3秒数后进行输出,否则在1秒后输出
unsafe.unpark(packThread);
/**
* Java...使用直接内存分配,我们创建的数组大小受限于堆大小;
* 实际上,这是堆外内存(off-heap memory)技术,在java.nio包中部分可用;
*
* 这种方式的内存分配不在堆上,且不受GC