【发布时间】:2011-11-11 15:25:31
【问题描述】:
我一直在考虑优化我在 Java 中的两种最新数据存储技术,并想知道哪种真的是最节省内存的。下面是对这两个类的描述。为了论证起见,假设它们具有与数据交互的相同方法,这允许用户通过以下方法单独或按范围获取或设置任何位的状态:
-
public boolean getBitState(byte bitIndex)- 检测并返回索引
bitIndex处的位状态
- 检测并返回索引
-
public Clazz setBitState(byte bitIndex, boolean newState)- 将索引
bitIndex处的位状态设置为newState并返回结果对象
- 将索引
-
public int getStateOfBits(byte startIndex, byte endIndex)- 检测并返回
startIndex和endIndex之间所有位的状态为int
- 检测并返回
-
public Clazz setStateOfBits(byte startIndex, byte endIndex, int newState)- 将
startIndex和endIndex之间所有位的状态设置为newState中提供的值。 - 如果
newState的位数少于适合,则通过在左侧添加零来使其适合 - 如果
newState的位数多于适合的位数,则会裁剪多余的位数(左侧)
- 将
这些是我为使用此接口而创建的类:
整数数组
此类使用int 作为通过位函数存储 32 位数据的方式。
Array32
此类使用 32 个booleans 的数组作为通过标准数组交互存储 32 位数据的方式。
【问题讨论】:
-
与任何性能问题一样,对其进行测试。创建越来越大的数组并监控每个实现下的 JVM 内存使用情况。
标签: java arrays optimization memory 32-bit