나는 3 개 스레드와 다중 스레드 응용 프로그램을 실행하고 있습니다 :는 메모리 누수 자바 OutOfMemoryError를 벡터에 목록
는- 메인 쓰레드 - 벡터 목록 저장소는
- AdderThread 개체 -이 벡터 목록
- RemoverThread에 개체를 추가 - vectorList.clear() 메서드로 객체 제거 (동기화)
응용 프로그램은 잘 실행되지만 몇 시간 후에 OutOfMemoryError가 발생합니다.
힙 덤프를 생성하고 모든 메모리를 사용하는 vectorList 클래스를 표시하는 eclipse MAT를 사용하여 분석했습니다.
clear
은 개별 객체가 차지하는 무료 메모리입니까?
해결 방법?
당신의'remove' 메쏘드가 호출 되었습니까? 벡터가 비어 있는지 확인하기 위해'remove' 메쏘드가 반환되기 전에 벡터의 크기를 출력하는 로그를 추가 할 수 있습니까? – assylias
예 clear()를 호출하면 Size가 0으로 인쇄됩니다. 나는 심지어 System.gc()를 사용하고있다. 문을 3 초 동안 반복하면 같은 오류가 발생합니다. – User1234