gpt4 book ai didi

Java 和虚拟内存 : Controlling/influencing which objects are kept in main memory?

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:46 24 4
gpt4 key购买 nike

我正在用 java 编写缓存服务器,它将图像数据(jpg、png、tiff 等)缓存在内存中,以便通过 http 进行快速访问。图像由另一个服务呈现,这是一项昂贵的操作,因此我想将它们缓存在我的缓存服务器上。

我从头开始编写它有几个原因,所以我要寻找的答案不是 [一些聪明的软件产品]

问题:如何在主存中保留一定的一组数据对象,并确保数据在我需要时确实在主存中,而不是被虚拟内存管理器推送到磁盘?也就是说,我如何在 Java 中执行此操作?

更多信息:对象可以以任何间隔引用,例如 有点极端:-)

编辑:我找到了这个 SO post它问“你能把对象保存在连续的内存中吗?” - 这不是我要问的问题,尽管它可能有所帮助,如果对象一直被引用,我想。顺便说一句,这个问题的答案是“否”,显然数组中的值类型除外。

最佳答案

我非常怀疑您能否单独使用 Java 完成此操作。你可能不得不使用类似 mlock 的东西通过 JNI,以及必要的 JNI 咒语将缓存的对象图固定在内存中,这样 GC 就不会移动它们。并且[在此处插入奇迹] 将固定的内存压缩到连续的页面中,因为这就是 mlock 的操作。

关于Java 和虚拟内存 : Controlling/influencing which objects are kept in main memory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com