2013-05-22 2 views
0

solrj를 사용하여 DB에서 데이터 색인화를 시작하고 DB에서 약 1 백만 개의 레코드를 검색 한 다음 레코드를 통해 Java를 사용하여 일부 프로세스를 만듭니다. 하지만 우리는 메모리에 약간의 문제가 있습니다. 우리가 인덱싱 프로세스를 시작하면 메모리는 국지적 인 문제가 인덱싱 프로세스 마무리하지만 메모리 당신은 답을 찾을 수 있어야한다 7 G.solrj를 사용하여 indixing하는 동안 메모리가 해제되지 않음

+0

당신은 JVM이 보유하고있는 메모리를 의미합니까하거나 JVM에 좀 있었나요 - 도구 VisualVM (JAVA_HOME/bin에서 찾을 수 있음)과 같으며 메모리가 여전히 보류 상태임을 알 수 있습니다 솔로? – cheffe

+0

메모리는 solr 전쟁과 데이터 전쟁을 인덱스하는 응용 프로그램이 포함 된 서버에 보관됩니다. VisualVM을 사용하지 않았습니다. – user1025523

+0

서버는 tomcat – user1025523

답변

0

당신의 JVM을 원하는 경우 : OU는 JVM이 메모리를 보유하고 있다고, 당신이 마이클 Borgwardt가 쓴 당신이 할 필요가이를 해결하기 JVM sending back memory to OS

에 자세히 설명되어있는 문제가 있다고 생각 특히 -XX, 당신은 tuning parameters of the Oracle JVM 사용할 수 있습니다, 더 열심히 OS에 메모리를 반환 : MaxHeapFreeRatio와 -XX ​​: MinHeapFreeRatio

+0

이지만이 옵션은 jdk_JRockit과 함께 작동하지 않을까요? 우리가 리눅스를 사용할 때 OS와 관련이있다. – user1025523

+0

아니요,이 명령 줄 인수는 jrockit에 대해 수행되지 않습니다. 그러나 내가 읽은만큼 (http://docs.oracle.com/cd/E13188_01/jrockit/docs142/intro/newftrs.html#1000276) jrockit은 즉시 상자에서 힙을 제거해야합니다. 그래서 당신이 solrj 루틴에서 메모리 누수가 있는지 확인하도록 권합니다. – cheffe

관련 문제