【发布时间】:2023-08-17 00:20:02
【问题描述】:
我将 Trie 与存储英文单词的 HashMap 进行比较,超过 100 万。加载数据后,仅执行查找。我正在编写代码来测试速度和内存。速度似乎很容易衡量,只需记录测试代码前后的系统时间。
衡量一个对象的内存使用的方法是什么?在这种情况下,它是 Trie 和 HashMap。我观察了系统性能监视器并在 Eclipse 中进行了测试。操作系统性能监视器显示我的测试程序启动后使用了超过 1G 的内存。我怀疑存储数据需要这么多内存的事实。
另外,在我的 Windows 机器上,它显示内存使用量在整个测试期间不断上升。这不应该发生,因为数据的初始加载时间很短。之后,在查找短语期间,不应再有任何额外的内存消耗,因为不会创建新对象。在 linux 上,内存使用似乎更稳定,虽然也增加了一些。
你能分享一些关于这个的想法吗?非常感谢。
【问题讨论】:
-
根据您的 trie 实现,一百万个条目可能需要 1G。但是由于您没有显示任何代码,因此任何人都不可能给您分析。或者,您可以进行堆转储并将属于您的 trie 的部分加在一起。获取堆转储的说明是here。