嗯,有没有Java内存使用方面的入门指南?我原本以为Sun或IBM会有一篇好的文章,但我找不到任何看起来真正可靠的东西。我想知道两件事:
1.在运行时,如何确定我的包中的类在特定时间使用了多少内存 2.在设计时,估计各种事物的通用内存开销,例如: - 创建一个空对象需要多少内存开销(除其字段所需的空间外) - 创建闭包需要多少内存开销 - 创建ArrayList等集合需要多少内存开销
我可能会创建数十万个对象,我希望成为一个“好邻居”,不要过度浪费RAM。我的意思是,我并不关心我是否比“最佳情况”多使用10%的内存,但如果我正在实现某些东西,它使用的内存是我可以通过简单更改而减少5倍,则我希望使用更少的内存(或能够在固定的可用内存量下创建更多的对象)。
我发现了几篇文章(Java专家通讯和来自Javaworld的一些内容),以及一个内置类java.lang.instrument.getObjectSize(),声称可以测量"近似"(??)的内存使用情况,但这些都似乎有点模糊不清...(我意识到在两个不同操作系统上运行的JVM可能会为不同对象使用不同数量的内存)
1.在运行时,如何确定我的包中的类在特定时间使用了多少内存 2.在设计时,估计各种事物的通用内存开销,例如: - 创建一个空对象需要多少内存开销(除其字段所需的空间外) - 创建闭包需要多少内存开销 - 创建ArrayList等集合需要多少内存开销
我可能会创建数十万个对象,我希望成为一个“好邻居”,不要过度浪费RAM。我的意思是,我并不关心我是否比“最佳情况”多使用10%的内存,但如果我正在实现某些东西,它使用的内存是我可以通过简单更改而减少5倍,则我希望使用更少的内存(或能够在固定的可用内存量下创建更多的对象)。
我发现了几篇文章(Java专家通讯和来自Javaworld的一些内容),以及一个内置类java.lang.instrument.getObjectSize(),声称可以测量"近似"(??)的内存使用情况,但这些都似乎有点模糊不清...(我意识到在两个不同操作系统上运行的JVM可能会为不同对象使用不同数量的内存)