【发布时间】:2010-09-28 06:34:58
【问题描述】:
嗯。 Java中的内存使用是否有任何入门知识?我原以为 Sun 或 IBM 会有一篇关于这个主题的好文章,但我找不到任何看起来很可靠的文章。我有兴趣了解两件事:
- 在运行时,确定我的包中的类在给定时间使用了多少内存
- 在设计时,估计各种事物的一般内存开销要求,例如:
- 空对象需要多少内存开销(除了其字段所需的空间)
- 创建闭包时需要多少内存开销
- 像 ArrayList 这样的集合需要多少内存开销
我可能创建了数十万个对象,我想成为一个“好邻居”,以免过度浪费 RAM。我的意思是我真的不在乎我使用的内存是否比“最佳情况”(不管是什么)多 10%,但是如果我正在实现一个使用 5 倍内存的东西,如果我做了一个简单的改变,我想使用更少的内存(或者能够为固定的可用内存量创建更多对象)。
我发现了几篇文章(Java Specialists' Newsletter 和来自Javaworld 的一些文章)和一个内置类java.lang.instrument.getObjectSize(),它声称可以测量内存使用的“近似值”(??),但这些看起来都像是模糊...
(是的,我意识到在两个不同操作系统上运行的 JVM 可能会为不同的对象使用不同数量的内存)
【问题讨论】: