嗯.Java中的内存使用是否有任何入门?我本以为Sun或IBM本来会有一篇关于这个主题的好文章,但我找不到任何看起来非常可靠的文章.我有兴趣了解两件事:
在运行时,计算出我的包中的类在给定时间使用了多少内存
在设计时,估计各种事物的一般内存开销要求,例如:
空对象需要多少内存开销(除了其字段所需的空间)
创建闭包时需要多少内存开销
像ArrayList这样的集合需要多少内存开销
我可能已经创建了数十万个对象,我想成为一个"好邻居",不要过度浪费RAM.我的意思是我并不在乎我是否比"最佳情况"(无论是那种情况)使用的内存多10%,但是如果我实现了一些使用5倍内存的东西,如果我做了一个简单的话改变,我想使用更少的内存(或者能够为固定数量的可用内存创建更多对象).
我发现了一些文章(Java专家的时事通讯和来自Javaworld的东西)和内置类java.lang.instrument.getObjectSize()之一声称测量内存使用的"近似"(??),但这些似乎都是有点模糊......
(是的,我意识到在两个不同的操作系统上运行的JVM可能会为不同的对象使用不同的内存量)