[英]My App is taking 250mb memory on my device. When I do a heap dump and analyze it. it says the heap size around 7mb
[英]Why does every query I do on Solr fill my heap memory of 10s of MB?
每次調用Solr服務時,我都很難理解到底是什么耗盡了Java堆內存:
在我的Web應用程序中,我有一個調用Servlet的前端,該Servlet發送帶有以下代碼的SolrQuery:
public class SolrService extends Application {
public static String url = Config.SOLR_HOST + ":" + Config.SOLR_SERVER_PORT;
final static HttpSolrServer solr = new HttpSolrServer(SolrService.url+"/"+Config.SOLR_INDEX+"/"+Config.SOLR_TYPE);
//in another class
SolrQuery query = new SolrQuery(q);
query.setStart(0);
query.setRows(limitRows);
query.addSortField("score", ORDER.desc);
QueryResponse response;
response = SolrService.solr.query(query,SolrRequest.METHOD.POST);
SolrDocumentList results = response.getResults();
SolrDocument doc = results.get(i);
//the response is then extracted in maps and returned
每當我執行請求時,我的Java堆內存都會大幅增加。 這是在完成0次查詢后Java堆內存的屏幕:
在嘗試了內核管理頁面上建議的optimize
之后,堆減少了很多:初始堆減少了1/10:
但這不是解決方案(可能是臨時的,但我不知道如何調用;也許通過某些URL?)
我已經看到,在查詢中強制使用最大數量的結果時,堆內存的增加較小。
我該怎么辦,我在哪里可以看?
您的Solr緩存是否有可能搶占堆?
看起來像這樣:在第一次查詢期間增加,過一會兒保持不變。
因此,如果堆大小增加相同,則可以運行帶有緩存自動預熱功能的優化。 您可以嘗試減少緩存設置。 不推薦這樣做,而只是找到原因。
看一下這里,您可以找到增加堆的一些原因: https : //wiki.apache.org/solr/SolrPerformanceProblems#How_much_heap_space_do_I_need.3F
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.