2
Android 앱의 성능을 향상 시키려하고 있으며 과도한 가비지 수집으로 인한 문제가 있다고 결론을 내 렸습니다. 힙 도구를 사용하여 할당 된 내용을 확인할 수 있지만 가비지 수집 대상을 확인하는 것이 좋습니다.GC 동안 무엇이 해제 되었습니까?
Java GC에서 어떤 객체가 해제되었는지 알 수있는 방법이 있습니까? 스톡 도구로 가능합니까? 이것에 대한 타사 도구가 있습니까?
[PhantomReferences] (http://docs.oracle.com/javase/7/docs/api/java/lang/ref/PhantomReference.html)는 객체가 GC가 될지 여부를 추적하는 데 사용됩니다. PhantomReferences로 수집 할 실제 개체를 검색 할 수 없으므로 개체를 직접 추적해야합니다. 또한 PhantomReference가 null로 설정되거나 자연스럽게 참조를 잃는 경우 객체는 GC입니다. 어쩌면 [이 예제] (https://github.com/RovoMe/PluginApplication/blob/unstable/PluginFramework/PluginCore/src/my/java/at/rovo/core/injection/InjectionControllerImpl.java)가 –
내 머리에서 빠져 나옵니다. : 관심있는 클래스에 대해'finalize()'메소드를 오버라이드 할 수 있습니다. 오브젝트가 gc 된 사실을 기록하는 기능을 추가하십시오. (적절한 프로파일 링 도구를 사용하여이를 수행하는 더 좋은 방법이있을 수 있습니다.) –
@MartijnCourteaux'finalize()'는 GCed 될 객체를 되찾아서 객체의 실제 GC를 막을 위험이 있습니다. PhantomReferences는 이것을 허용하지 않지만 누군가가 PR에 대한 참조를 계속 유지한다면 이는 GC를 방지합니다. –