Grails,地图和内存管理

时间:2013-02-25 12:59:24

标签: grails

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

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

Grails如何利用其所有地图习语来解决这个问题?有没有人对他们的Grails应用程序进行内存分析?像params这样的地图会暂停一段时间,还是可以预测死亡并在用户会话终止时收集?或者我是否需要认识到在Grails中使用Maps和在Java中一样?

=======更新==== 上述问题仍然存在,但用于参考的文章是here

2 个答案:

答案 0 :(得分:3)

HashMap的实例与Java中任何其他类的实例没有区别 - 只要地图(分别是POJO)可以到达,那么地图条目引用的所有其他对象(在POJO中的resp。字段) )也可以到达。一旦地图(POJO)实例未被引用,其所有可通过地图(POJO)可到达的条目(字段)将有资格进行垃圾收集。

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

答案 1 :(得分:1)

我不会因为不使用地图而购买强烈的参考论据。

在您没有对HashMap的任何引用之后,它变得对于GC是合格的,并且在此之后,所有未被其他东西引用的元素也变得可以被忽略。

对于保存其值的地图,直到您无法访问它们为止,请查看WeakHashMap