例如,假设我有一个应用程序可以读取包含大量数据行的CSV文件.我根据数据类型向用户提供行数的摘要,但我想确保我不读取太多数据行并导致OutOfMemoryErrors.每行都转换为一个对象.有没有一种简单的方法可以通过编程方式找出该对象的大小?是否有一个引用定义了大型基元类型和对象引用的大小VM?
现在,我的代码可以读取多达32,000行,但我还希望代码能够读取尽可能多的行,直到我使用了32MB的内存.也许这是一个不同的问题,但我仍然想知道.
我正在计算java对象[hashmap]的大小[使用的内存].它包含[在运行时]不同数据类型的元素,因此[no-of-elem*size-of-element]并不是一种好方法.现在的代码是通过一系列的
if (x)
do something
else if (primitives)
lookup size and calculate
Run Code Online (Sandbox Code Playgroud)
然而,这个过程是CPU占用并且效率低下.
我正在考虑采用以下两种方法:
我正在寻找任何人使用这些方法的性能,效率,缩放等经验,或者如果你知道更好的方法.
PS:这是我正在构建的后台实用程序,因此大小不需要超级准确,尽管它应该是正确的.因此,我愿意以准确性换取性能
我对深度大小不感兴趣[不会计算此对象引用的对象的大小.]
我正在寻找性能比较和理解getObjectSize()如何在内部工作..所以我不会搞砸别的东西来提高性能
谢谢
我想知道检索java对象大小的任何简单方法吗?另外,无论如何要在c ++中获得像sizeof运算符这样的类的大小?