我使用Mallet 2.0.8进行主题建模。应用程序循环遍历一组文档并计算每个文档的主题模型(没有信息将在传递之间共享或之后聚合)。每个过程为当前文档构造一个带有new cc.mallet.types.Alphabet()
的新字母。
但是,看起来字母表消耗的内存在每次传递后都无法进行垃圾回收,因为它在cc.mallet.types.Alphabet.deserializedEntries
中被引用。似乎也有question on the mailing list regarding this issue。
作为一种解决方法,我使用反射并将字段cc.mallet.types.Alphabet.deserializedEntries
设置为java.util.concurrent.ConcurrentHashMap<K, V>
的子类,在调用putIfAbsent(K, V)
时什么都不做。
我现在的问题是: