수천 개의 오브젝트를 트리와 같은 계층 구조로 초기화하는 Java 프로젝트가 있습니다.Java 메모리 소비에 대한 클래스 - 프로파일 작성
처음에는 성능을 염두에두고 프로그래밍했기 때문에 클래스 필드 (변수)에 많은 계산 가능한 속성을 저장하는 것을 신경 쓰지 않았습니다.
그러나 최근에 저는 프로젝트의 메모리 사용량을 예측하기 시작했습니다. 매우 큰 것으로 나타났습니다.
내가 어떤 클래스를 식별하기 위해 노력하고있어이
내가 자바의 instrumentation
패키지와 getObjectSize
건너왔다되는 필드 (아마도 문자열)을 최대한 소모에 가장 메모리
것 같아요 그때 범위를 좁힐 수 있습니다에게 소비
나는 그들의 문서를 이해하려고 노력했지만, instrumentation
이 내 작업에 적합한 지 확신 할 수 없다.
나는 또한 getObjectSize
이 재귀 적으로 크기를 찾지 못한다는 사실을 발견했습니다.
나는 Object
를 확장하고 instance -> instanceSize
의 정적지도를 포함하는 클래스를 생성 생각하고 내 모든 수업을 뻗어있는이 클래스는 또한 자신의 생성자
이 작업을 수행하는 가장 'Java'방법은 무엇입니까?
저는 Eclipse Memory Analyzer Tool (MAT)을 사용하기 시작했으며 훌륭하게 작동합니다! 통찰력에 감사드립니다. –