marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/images/b.html" frameborder="0" width="728" scrolling="no" height="90">
private void MemoryLeak()
{
Directory directory = new RAMDirectory();
Analyzer analyzer = new StandardAnalyzer();
IndexWriter writer = new IndexWriter(directory, analyzer, true);
for (int i = 1; i <= 1000; i++)
{
Document document = new Document();
document.Add(Field.Keyword("field1", i.ToString()));
writer.AddDocument(document);
}
writer.Close();
int x = 0;
while (true)
{
IndexSearcher searcher = new IndexSearcher(directory);
//Sort sort = new Sort("field1"); // remove this line to avoid the memory leak
Sort sort = new Sort(new SortField[] { new SortField("field1", SortField.INT, false), SortField.FIELD_DOC });
Query query = QueryParser.Parse("1*", "field1", analyzer);
Hits hits = searcher.Search(query, sort);
searcher.Close();
Console.WriteLine("{1} - {0} MB", Process.GetCurrentProcess().WorkingSet64 / 1024 / 1024, ++x);
}
}
{
Directory directory = new RAMDirectory();
Analyzer analyzer = new StandardAnalyzer();
IndexWriter writer = new IndexWriter(directory, analyzer, true);
for (int i = 1; i <= 1000; i++)
{
Document document = new Document();
document.Add(Field.Keyword("field1", i.ToString()));
writer.AddDocument(document);
}
writer.Close();
int x = 0;
while (true)
{
IndexSearcher searcher = new IndexSearcher(directory);
//Sort sort = new Sort("field1"); // remove this line to avoid the memory leak
Sort sort = new Sort(new SortField[] { new SortField("field1", SortField.INT, false), SortField.FIELD_DOC });
Query query = QueryParser.Parse("1*", "field1", analyzer);
Hits hits = searcher.Search(query, sort);
searcher.Close();
Console.WriteLine("{1} - {0} MB", Process.GetCurrentProcess().WorkingSet64 / 1024 / 1024, ++x);
}
}