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

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

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

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

替代文字

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

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

或者,您可以尝试使用该技术吗?您知道您的数据大小吗? 。

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

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

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