3

根据我的经验,地图是 Grails 和 Groovy 开发中非常常见的习语。现在我已经转移到一个使用更传统 Java 的项目,我的技术主管因为使用而受到了重创HashMaps——>我理解他的原因。 HashMaps使用StrongReferences. StrongReferences任何时候都有参考链。

我在 Groovy 中看到的一个常见习惯用法是使用 map 来代替 POJO。(例如,在网上浏览示例时,您会到处看到它。)

Grails 如何使用它的所有地图习语来解决这个问题?有人对他们的 Grails 应用程序进行过内存分析吗?像这样的地图params会停留一段时间,还是它们会随着用户会话终止而死掉并被收集?还是我需要像在 Java 中一样了解Maps在 Grails 中的使用?

=======更新==== 上面的问题仍然存在,但用于参考的文章在这里

4

2 回答 2

3

的实例与HashMapJava 中任何其他类的实例没有什么不同——只要映射(分别为 POJO)是可访问的,那么映射条目(分别是 POJO 中的字段)引用的所有其他对象也将是可访问的。一旦映射 (POJO) 实例被取消引用,其所有只能通过映射 (POJO) 访问的条目(字段)都将有资格进行垃圾收集。

在这方面,地图并不比其他类好或差。

于 2013-02-25T13:07:02.907 回答
1

我不购买不使用地图的强大参考论据。

在您没有对 HashMap 的任何引用之后,它就可以用于 GC,然后,它的所有未被其他东西引用的元素也变得可以用于 GC。

对于在您无法访问它们之前保存其值的地图,请查看WeakHashMap

于 2013-02-25T13:09:53.460 回答