【发布时间】:2015-09-14 07:45:03
【问题描述】:
我的应用程序中有很多字节数组,它们通常连续包含相同的值。我一直需要访问这个数组,所以压缩可能会导致性能问题。我的程序消耗 1.5GB 内存(任务管理器),其中 1GB 只是字节数组。
有没有办法更好地处理这类数据?
为了弄清楚我在说什么:我正在开发一个体素引擎,这些字节数组代表体素的类型(因此“空气”体素可以经常连续包含)。
我需要尽可能多地节省内存。
【问题讨论】:
-
所以你知道哪个字节数组是不需要的?
-
好吧,那些只包含空气的人无论如何都没有得救。但是其他的则充满了噪声生成的值。
-
@user3088126 是否可以重新生成噪声生成的值或避免生成它们,除非数据实际上对用户可见。您需要记录的唯一方块是用户看到的方块。
-
如果您在运行服务器,几 GB 并不多,但如果您在 PC 上运行,这可能很重要,您是否考虑使用内存映射文件。这些具有使用非常少的堆并在您更新它们时被保存的优点。如果文件的页面有一段时间没有被使用,操作系统可以将它们从内存中取出,并在您再次使用它们时将它们重新添加。
-
我需要保存数据(生成将需要更长的时间......这不仅仅是稍后的噪音)并且我需要数据来生成渲染数据。内存映射文件到底是什么?它们在 Java 中可用吗?