在数据结构中,我知道结构的大小取决于从一个部分到另一个部分的内部链接。除了JProfiler之外,有没有办法确切地告诉特定结构中有多少内存?
例如,本学期的课程项目与将各种结构应用于歌曲数据库有关。这些项目涵盖了数组,列表,展开的列表和树。我想做的是看看使用了多少内存。例如,链表的内存要求为3N,但我想看看节点占用了多少空间。
JProfiler看起来会起作用,但500美元超出了我的价格范围,我想将它用于本学期涵盖的所有结构,而不是目前为止应用的三种结构。
答案 0 :(得分:6)
使用VisualVM。它附带JDK,允许您拍摄堆的快照。
答案 1 :(得分:1)
最准确的方法可能是使用分析器 - 使用Google查找免费分析器。
或者,您可以在Do you know your data size?中尝试该技术。
答案 2 :(得分:1)
我以前从未使用过这个,但是getObjectSize方法作为Instrumentation界面的一部分,可以在没有第三方应用程序的情况下提供您想要的答案。正如Amir建议的那样,VisualVM可能并不容易,但阅读它并不会让人痛苦。
答案 3 :(得分:-2)
使用System.getRuntime()。freeMemory()。
运行垃圾收集器;检查空闲内存;创建一个对象;检查空闲内存;减去。