2016-03-25 36 views
0

我正在开发一个类,它将代表Java中一个表中的一组行。行可以是紧凑或扩展格式。可以使用函数调用来检测对象中的内部格式。Java中的内存占用量估算

我试图编写一个单元测试来了解这个对象的紧凑和扩展格式的内存占用情况。我用记忆表https://github.com/jbellis/jamm)。我注意到即使底层数据在不同的运行中保持相同,对象的深度大小也显示为不同。我对此有点困惑。我的期望是通过对象图的遍历应该能够正确估计sizeof(object)。这可能是我使用的软件包的问题,​​或者是我的期望错误?

回答

1

如果测试中的代码使用延迟初始化,或者测试用例执行不同的操作,则内​​存中的实际实例可能在计数,大小和偶数类型上有所不同。

我会验证你的不同运行是否使用相同的测试用例,如果他们不是,我不会假设相同输入的内存消耗是相等的。

+0

感谢您的快速响应。当你对同样的测试用例说“等价”时,你的意思是相同的数字(例如:每次运行550字节)还是小的差异?在C++中,sizeof()在给定的平台上提供了非常精确的估计。 – ToyElephant