我试图通过扩展现有的Java程序来实现概念验证内存感知调度功能。该程序使用byte []
形式的缓冲区。出于我的目的byte []
是有问题的,因为
为了实现我的目标,我希望缓冲区是懒惰分配的内存(仅在写入时分配的页面)并且可以按需释放。这与C ++中的情况类似。 此外,我希望尽可能减少对现有代码库的更改。
我查看了nio.ByteBuffer
和不安全的课程。不适合我的情况,因为
java.nio.ByteBuffers
似乎没有被懒惰分配。当我分配一个空的1GB缓冲区时,程序的RSS立即变为1GB。Unsafe.allocateMemory
已懒惰分配,但我不知道如何将其引用为byte []
。有什么方法可以解决这个问题吗?
有什么方法可以将Unsafe.allocateMemory()
分配的内存视为byte []
?
或者将现有byte []
更改为指向分配给不安全的内存?
谢谢
答案 0 :(得分:0)
Java旨在具有单独的内存区域。