如何确定数据结构的实际内存使用情况

时间:2010-10-25 22:41:32

标签: java data-structures memory-management

在数据结构中,我知道结构的大小取决于从一个部分到另一个部分的内部链接。除了JProfiler之外,有没有办法确切地告诉特定结构中有多少内存?

例如,本学期的课程项目与将各种结构应用于歌曲数据库有关。这些项目涵盖了数组,列表,展开的列表和树。我想做的是看看使用了多少内存。例如,链表的内存要求为3N,但我想看看节点占用了多少空间。

JProfiler看起来会起作用,但500美元超出了我的价格范围,我想将它用于本学期涵盖的所有结构,而不是目前为止应用的三种结构。

4 个答案:

答案 0 :(得分:6)

alt text

使用VisualVM。它附带JDK,允许您拍摄堆的快照。

答案 1 :(得分:1)

最准确的方法可能是使用分析器 - 使用Google查找免费分析器。

或者,您可以在Do you know your data size?中尝试该技术。

答案 2 :(得分:1)

我以前从未使用过这个,但是getObjectSize方法作为Instrumentation界面的一部分,可以在没有第三方应用程序的情况下提供您想要的答案。正如Amir建议的那样,VisualVM可能并不容易,但阅读它并不会让人痛苦。

答案 3 :(得分:-2)

使用System.getRuntime()。freeMemory()。

运行垃圾收集器;检查空闲内存;创建一个对象;检查空闲内存;减去。