문제

많은 기억을 사용하여 갑자기 응용 프로그램을 프로파일 링하고 있습니다.

sun.java2d.loops.processpath $ point

거의 11.000.000 번 할당됩니다.

그것은 무엇이며, 이것에 대한 해결책이 있습니까?

도움이 되었습니까?

해결책

나의 초기 응답은 이것이 실제로 많은 메모리/CPU 사이클을 사용하고 있는지 의문을 제기하는 것입니다. 그만큼 sun. 패키지는 Sun의 JVM의 내부 구현이므로 코드가 수행하는 작업에 대한 수준의 세부 사항 일 가능성이 높습니다. 이러한 객체가 문제가 될 수있는 방대한 양의 메모리를 취하는 경우, 단순히 1,100 만 할당을 보는 것은 평범하지 않은 것을 나타내는 것은 아닙니다.

편집하다: 약간의 인터넷 검색은 이것이 2D 평면의 특정 지점에 대한 참조를 인코딩하는 데 사용되는 객체임을 보여줍니다. 그래픽과 관련된 작업을 수행하면 예, 많은 양의 양을 생성 할 수 있습니다. 또한 각각은 두 개의 정수 (X 및 Y 좌표)와 부울 만 저장하므로 그랜드 사물의 계획에서 매우 작은 물체가 될 것입니다. 1,100 만 개의 할당 중 어느 것도 수집되지 않았더라도 (그리고 대다수가 로컬 변수 였으므로 신속하게 수집 될 것으로 예상한다면), 그들은 당신이 힙의 상당 부분을 설명하지 않을 것입니다. 소량의 RAM이있는 장치에서 실행됩니다.

다시 말해, 다른 곳에서 문제를 찾으십시오. 많은 양의 현재 힙 공간을 차지하는 객체를 보거나 누출을 찾기 위해 현재 참조 된 물체의 수를 보는 것이 더 도움이 될 것입니다. 선택한 도구로 메모리 누출을 찾아서 메모리 누출을 찾는 방법에 대한 지침을 제공하는 문서를 읽습니다. 주어진 클래스에 대해 얼마나 많은 것을 해야하는지 알지 않는 한 총 할당을 보는 것은 거의 유용하지 않습니다 (예 : 싱글 톤이 한 번만 만들어 졌는지 확인하는 것이 좋습니다).

다른 팁

메모리 문제를 해결했습니다. 나는 내 코드의 일부 장소를 다루는 불쾌한 참조를하고있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top