我有一个应用程序可以读取包含大量数据行的 CSV 文件。我根据数据类型向用户提供了行数的摘要,但我想确保我不会读取太多数据行并导致 OutOfMemoryError
s。每行转换为一个对象。有没有一种简单的方法可以以编程方式找出该对象的大小?是否有定义 VM
的原始类型和对象引用有多大的参考?
现在,我有代码说 read up to 32,000 rows ,但我也希望有代码说 read as many rows as possible 直到我使用了 32MB 内存。也许这是一个不同的问题,但我仍然想知道。
原文由 Jay R. 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
java.lang.instrument
包。编译这个类并将其放入一个 JAR 中:
将以下内容添加到您的
MANIFEST.MF
:使用
getObjectSize()
方法:调用: