Java,缓冲区延迟分配,按需可释放并作为byte []寻址

 龙娃爸爸3 发布于 2023-02-10 12:40

我试图通过扩展现有的Java程序来实现概念验证内存感知调度功能.该程序使用缓冲区的形式byte [].因为我的目的byte []是有问题的,因为

    他们是垃圾收集

    它们被预先分配而不是懒惰(JVM似乎触及它在创建缓冲区时分配的所有页面)

    它们使JVM分配越来越多的内存,而这些内存并没有返回给操作系统.

为了实现我的目标,我希望缓冲区是懒惰分配的内存(仅在写入时分配的页面)并且可以按需释放.这与C++中的情况类似.另外,尽可能地,我想尽量减少对现有代码库的更改.

我看着nio.ByteBuffer不安全的班级.不适合我的情况,因为

    java.nio.ByteBuffers似乎没有懒惰的分配.当我分配一个空的1GB缓冲区时,程序的RSS立即变为1GB.

    Unsafe.allocateMemory懒惰分配,但我不知道如何引用它byte [].

有什么方法可以解决这个问题吗?以任何方式查看分配的内存Unsafe.allocateMemory()byte []?或者将现有更改byte []为指向分配给Unsafe的内存?

谢谢

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有