【发布时间】:2013-12-05 13:26:00
【问题描述】:
我有一个具体的问题。我有一个程序可以在大数据集中进行搜索。我在搜索器中有一个缓存,以使程序更快。这个缓存是一个包含哈希图的大哈希图。 我的主要功能是为数据集创建一个搜索器,获取搜索参数,进行搜索,将其写下来,然后对另一个数据集创建一个新的搜索器并再次进行搜索。
我给 VM 4gb 内存,一个缓存大约需要 1.5gb。因此,第一次和第二次搜索顺利且全速进行,但在第三次搜索中 gc 开始丢弃并占用 cpu 时间。
在代码中:
public static void main(String[] args) {
Searchvals sv=new Searchvals("c:\\svs.txt")
Searcher s=new Searcher("d:\\");
s.init();
s.makeSearch(sv);
s.writeOut("c:\\out1.txt");
System.gc();
s=new Searcher("e:\\");
s.init();
s.makeSearch(sv);
s.writeOut("c:\\out2.txt");
System.gc();
s=new Searcher("f:\\");
s.init();
s.makeSearch(sv);
s.writeOut("c:\\out3.txt");
}
所以我正在搜索 gc 策略,如果我调用它,或者如果内存不足,它会大扫除。时间无关紧要,它不是一个负责任的应用程序,它是一个数据挖掘器,在每个进程之后我想释放所有可以通过的内存。
我尝试用谷歌搜索,但这不是一个简单的话题。
【问题讨论】: