因为Jvm无法管理堆外内存,所以如何回收呢?
首先是堆外内存如何申请的呢?
通过unsafe中的allocateMomory方法,参数为size(申请的堆外内存大小),并返回内存地址base;
清除时,创建Cleaner对象,调用Cleaner.creat(this(当前堆外内存Buffer),内存释放器。)
内存释放器Deallocator 的底层是有个run方法,调用unsafe.freeMemory去释放空间
因为Jvm无法管理堆外内存,所以如何回收呢?
首先是堆外内存如何申请的呢?
通过unsafe中的allocateMomory方法,参数为size(申请的堆外内存大小),并返回内存地址base;
清除时,创建Cleaner对象,调用Cleaner.creat(this(当前堆外内存Buffer),内存释放器。)
内存释放器Deallocator 的底层是有个run方法,调用unsafe.freeMemory去释放空间