我有一个响应移动的应用程序。
监听器似乎在一个 Action 中被调用多次,即如果我将应用程序从监视器的一部分拖到另一部分。
发生这种情况时,我将一些数据存储到哈希表中。每次存储数据时,我都需要存储到一个空的 Hashtable 中。
每次都删除 Hashtable 的内容会更好还是我可以只实例化一个新的 Hashtable(使用相同的变量)?哈希表将包含不超过 5 个键/值对。
后一种方法会开始消耗过多内存,还是 Java 垃圾收集器会足够快地释放这些内存?
最佳答案
除了选择不可变还是可变 Map 之外,您还需要在
- 是否希望每次更改都立即在 HashMap 中可见
- 或者您可以将更改事件写入队列并定期将它们刷新到 HashMap,这将确保您的 HashMap 不会像第一种解决方案那样频繁写入,并且可以为您带来性能优势 + 响应能力(放入队列是比放入 HashMap 更轻的操作)。
我建议您继续尝试这两种方法,分析然后找出答案。
必须优先考虑代码的清晰度和可理解性。如果更清晰的方法(这里使用不可变的 HashMap)的性能影响不是难以忍受,那么就去做吧。
关于java - 删除 Hashtable 的内容或只是实例化一个新的 Hashtable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908988/