Groovy AbstractConcurrentMap中的Bug?
是Groovy中的核心类,用于存储运行时添加到Groovy类中的动态属性。我在Groovy 1.8.8中使用Grails 2.1.2,但我认为所有Groovy版本都存在这个问题(链接的源代码是针对Groovy 2.4.3版的) 问题发生在内部类段的方法中(第105行):Groovy AbstractConcurrentMap中的Bug?,groovy,Groovy,是Groovy中的核心类,用于存储运行时添加到Groovy类中的动态属性。我在Groovy 1.8.8中使用Grails 2.1.2,但我认为所有Groovy版本都存在这个问题(链接的源代码是针对Groovy 2.4.3版的) 问题发生在内部类段的方法中(第105行): 当当前计数大于贴图的阈值时,将发生。现在棘手的部分是,地图保存对对象的软引用并验证这些引用。因此,当GC丢弃软引用时,生成的段不会展开(正如方法中假定的那样) 在中,Segmen的内部计数器被更新count=newCount(
- 当当前计数大于贴图的阈值时,将发生。现在棘手的部分是,地图保存对对象的软引用并验证这些引用。因此,当GC丢弃软引用时,生成的段不会展开(正如方法中假定的那样)
- 在中,Segmen的内部计数器被更新
(这是“活动”未分类引用的数量,可以小于前面所述的计数)count=newCount
- 完成后,该方法继续,但问题在于,它忽略了内部计数的先前设置,并在每一行上设置了先前的计数+1值,并且
threshold=786432;计数=786432
count=786433;阈值=786432
count=486000
count=786433
c = count + 1
Groovy JIRA上报告了该错误,现在已修复
Fix Version/s:
2.4.4, 2.5.0-beta-1
您应该在上报告此问题,并将建议的修复作为一个diff/pull请求进行报告,可能还需要一些测试来显示问题。至少你会瞄准groovy方面的专家。因此,对于潜在的语言错误,这几乎不是一个同行评审页面。Thx作为回复,我提交了以下问题: