2013-08-20 2 views
0

수천 개의 오브젝트를 트리와 같은 계층 구조로 초기화하는 Java 프로젝트가 있습니다.Java 메모리 소비에 대한 클래스 - 프로파일 작성

처음에는 성능을 염두에두고 프로그래밍했기 때문에 클래스 필드 (변수)에 많은 계산 가능한 속성을 저장하는 것을 신경 쓰지 않았습니다.
그러나 최근에 저는 프로젝트의 메모리 사용량을 예측하기 시작했습니다. 매우 큰 것으로 나타났습니다.

내가 어떤 클래스를 식별하기 위해 노력하고있어이

내가 자바의 instrumentation 패키지와 getObjectSize 건너왔다되는 필드 (아마도 문자열)을 최대한 소모에 가장 메모리
것 같아요 그때 범위를 좁힐 수 있습니다에게 소비

나는 그들의 문서를 이해하려고 노력했지만, instrumentation이 내 작업에 적합한 지 확신 할 수 없다.
나는 또한 getObjectSize이 재귀 적으로 크기를 찾지 못한다는 사실을 발견했습니다.

나는 Object를 확장하고 instance -> instanceSize의 정적지도를 포함하는 클래스를 생성 생각하고 내 모든 수업을 뻗어있는이 클래스는 또한 자신의 생성자

를 업데이트 한 내 접근이 맞습니까?
이 작업을 수행하는 가장 'Java'방법은 무엇입니까?

답변

1

음, 코딩 도구를 사용하고 메모리 프로파일 러를 선택하십시오. 그곳에는 큰 자유로운 것들이 있습니다.

+0

저는 Eclipse Memory Analyzer Tool (MAT)을 사용하기 시작했으며 훌륭하게 작동합니다! 통찰력에 감사드립니다. –