使用字节数组降低内存消耗

时间:2015-09-14 07:45:04

标签: java arrays

我的应用程序中有很多字节数组,它们通常包含相同的值。我需要一直访问此阵列,因此压缩可能会导致性能问题。我的程序消耗1.5GB内存(任务管理器),其中1GB只是字节数组。

有没有办法更好地处理这类数据?

为了弄清楚我在说什么:我正在研究一个体素引擎,那些字节数组代表了体素的类型(所以"空气" - 体素可以连续包含在内)。 / p>

我需要尽可能多地保存内存。

1 个答案:

答案 0 :(得分:6)

这听起来像是flyweight pattern的用例:创建一种代理类而不是直接访问数组。这些代理将访问公共存储。每次添加新数组时,代理都会查看存储是否存在相等的字节数组并引用它。这消除了重复。

当然,这种模式要求数组是不可变的。如果你需要修改它们,你首先需要复制数组,然后修改它,然后再次重复#34;重复数据删除"。