为什么这个热交换会使我的应用程序处于不良状态?

时间:2015-02-12 19:31:19

标签: java debugging intellij-idea jvm

在我的申请中,我有protected final ConcurrentHashMap。我执行以下步骤

  1. 将调试点放在我调用putIfAbsent
  2. 的行上
  3. 等待应用程序在所述调试点暂停
  4. 对我的班级做一个小改动,例如从1行if语句添加/删除大括号。
  5. 使用IntelliJ的HotSwap
  6. 让应用程序继续完成。 (在此过程中,ConcurrentHashMap被清除。)
  7. 下次我运行调试点时,我有一个新类的实例和一个新的ConcurrentHashMap实例,但是ConcurrentHashMap是用前一个ConcurrentHashMap的不完整版本预先推测的。

    任何人都可以解释为什么会这样吗?我知道我可以通过HotSwapping中调试来避免它。但我很好奇为什么JVM会以这种方式运行并允许我这样做。

0 个答案:

没有答案