2009-10-16 3 views
1

나는 질의를 통해 채워지는 list 요소를 가지고있다.이 요소는 for 루프를 통해이 목록을 프론트 엔드 인 jsp로 전송하고 인쇄한다.Java 웹 응용 프로그램에서 사용 된 모든 모음을 지우면 더 나은 메모리 관리가 이루어 집니까?

for 루프 외부에서 list.clear()를 호출하면 목록 객체가 지워지므로이 방법이 메모리 관리를 향상시킬 수 있는지 알고 싶습니까? 또는 그러한 활동을 위해 weakhashmap을 사용해야합니까?

많은 타사 jar 파일과 컨테이너를 사용하는 웹 응용 프로그램에서 프로파일 링은 메모리 사용량을 파악하는 좋은 방법이지만 특정 상황에 대한 최선의 방법을 알고있는 방법이 있다면 코드 작성 중에도 유용합니다 접근법을 채택하는 것이 더 쉽습니다. 예 : 대부분 정적 인 사이트는 최대 절전 모드 나 톱 링크 타입의 캐싱에 도움이 될 수 있지만 하루에 수천 개의 항목이있는 사이트는 캐시 할 개체가 많은 의미를 갖는 다른 접근 방식을 필요로 할 수 있습니다.

특정 상황에 어떤 접근 방식을 채택 할 것인지 명확하게 정의 할 수있는 자료는 크게 권장됩니다.

자바의 장점은 선택입니다, 자바의 단점은 선택입니다!

답변

5

GC를 두 번째로 추측하지 않는 것이 좋으며 결과에 놀랄 수도 있습니다. 간단하게 유지하십시오 : 무언가가 끝나면 참조를 처리하십시오. 그 외에는 문제가있을 때까지 문제를 해결하지 마십시오.

+0

루프가 끝난 후 목록을 더 이상 사용하지 않으면 Java에서 해당 목록이 GC에 적합하다는 것을 알게됩니다. 항목을 채우는 항목도 마찬가지입니다. 그래서 +1로 cletus, GC가 그 일을하게 :) – Olivier

1

이 경우 WeakHashMap을 사용하고 싶지는 않습니다. 요소를 완료하기 전에 요소를 제거 할 수 있기 때문입니다. 컬렉션을 지울 수는 있지만 컬렉션이 로컬 변수에 의해서만 참조되는 경우 실제로는 필요하지 않습니다.

관련 문제