根据我的经验, map 是 Grails 和 Groovy 开发中非常常见的习惯用法。现在我已经转移到一个更传统的 Java 项目,我因使用 HashMaps 而受到技术主管的严厉打击,我理解他的理由。 HashMap
使用StrongReferences
。只要存在引用链,StrongReferences
就会一直存在。
我在 Groovy 中看到的一个常见习惯用法是使用映射来本质上代替 POJO。 (就像在网上浏览示例时您到处都能看到它一样。)
Grails 如何通过其所有的映射惯用法来解决这个问题?有人在他们的 Grails 应用程序上做过内存分析吗?像 params
这样的映射会停留一段时间,还是会按预期死亡并在用户 session 终止时被收集?或者我需要像在 Java 中一样了解在 Grails 中使用 Map
吗?
======更新==== 上面的问题依然存在,但是引用的文章是here :
最佳答案
HashMap
的实例与 Java 中任何其他类的实例没有什么不同 - 只要映射(分别是 POJO)可访问,那么映射条目(分别是字段)引用的所有其他对象在 POJO 中)也可以访问。一旦映射 (POJO) 实例被取消引用,只能通过映射 (POJO) 访问的所有条目(字段)将有资格进行垃圾回收。
在这方面, map 并不比其他类更好或更差。
关于Grails、映射和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15067576/