java hashmap object_Java中的大量Object(使用HashMap)
你好,
我目前正在研究Java中的單詞預測.
為此,我使用的是基于NGram的模型,但我有一些內存問題……
在第一次,我有一個這樣的模型:
public class NGram implements Serializable {
private static final long serialVersionUID = 1L;
private transient int count;
private int id;
private NGram next;
public NGram(int idP) {
this.id = idP;
}
}
但這需要大量的記憶,所以我認為我需要優化,我想,如果我有“向世界問好”和“向人民問好”,而不是得到兩個ngram,我可以保留一個“你好” “然后有兩個可能性:”人“和”世界“.
更清楚的是,這是我的新模型:
public class BNGram implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private HashMap next;
private int count = 1;
public BNGram(int idP) {
this.id = idP;
this.next = new HashMap();
}
}
但似乎我的第二個模型消耗了兩倍的內存…我認為這是因為HashMap,但我不知道如何減少這個?我嘗試使用不同的Map實現,比如Trove或其他,但它不會改變任何東西.
為了給你一個想法,對于一個9MB的文本,帶有57818個不同的單詞(不同,但它不是單詞的總數),在NGram生成之后,我的javaw進程消耗1.2GB的內存……
如果我用GZIPOutputStream保存它,它在磁盤上需要大約18MB.
所以我的問題是:如何使用更少的內存?我可以用壓縮制作東西(作為序列化).
我需要將其添加到其他應用程序,所以我需要減少內存使用量之前……
非常感謝,抱歉我的英語不好……
ZiMath
總結
以上是生活随笔為你收集整理的java hashmap object_Java中的大量Object(使用HashMap)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中的locksupport_详解
- 下一篇: 冒号运算 java_java 8 双冒号