【问题标题】:Remove contents of Hashtable or just instantiate a new Hashtable?删除 Hashtable 的内容还是只实例化一个新的 Hashtable?
【发布时间】:2016-08-12 02:35:20
【问题描述】:

我有一个响应被移动的应用程序。

监听器似乎在一个动作中被多次调用,即如果我将应用程序从监视器的一个部分拖到另一个部分。

发生这种情况时,我会将一些数据存储到 Hashtable 中。每次存储数据都需要存储到一个空的Hashtable中。

每次删除 Hashtable 的内容会更好,还是我可以只实例化一个新的 Hashtable(使用相同的变量)? Hashtable 将包含不超过 5 个键/值对。

后一种方法会开始消耗过多的内存,还是 Java 垃圾收集器足够快地释放这些内存?

【问题讨论】:

标签: java


【解决方案1】:

除了选择不可变和可变映射之外,您还需要在两者之间做出选择

  • 您是否希望每个更改在 HashMap 中立即可见
  • 或者您可以将更改事件写入队列并定期将它们刷新到 HashMap,这将确保您的 HashMap 不会像第一种解决方案那样频繁写入,并且可能会给您带来性能优势 + 响应能力(放入队列是比放入 HashMap 的操作更轻松)。

我建议您继续尝试这两种方法,配置文件然后找出。

必须优先考虑代码的清晰性和可理解性。如果更清晰的方法(这里使用不可变的 HashMap)对性能的影响不是无法忍受的,那就去吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多