후, 그들의 대부분은 등 JDBC 연결과 같은 라이브러리의 인스턴스입니다.java.lang.ref.Finalizer에서 OutOfMemory 나는 그것이 마무리를 기다리고있는 객체을 많이 가지고 실현 힙 덤프를 추출 메모리 올리고
왜 단순히 완성되지 않을 것이다, 큐에 해당 인스턴스가 finalize()
구현 클래스는 기본적 것을 알고?
며칠 전 나는 그런 인스턴스의 메모리를 올렸다. 처음에는 새로운 세대가 256MB (-Xmx1g -XX:NewSize=256m -XX:MaxNewSize=256m
)로 설정된 1GB가있었습니다. 무거운 캐싱 기능을 추가함에 따라 해당 인스턴스에 할당 된 메모리를 3GB (-Xmx3G -XX:NewSize=512m -XX:MaxNewSize=512m
)로 늘 렸습니다. 그 순간부터 우리는 추억의 일부를보기 시작합니다. 조금만 조사해 보면 Finalization을 기다리는 많은 java.lang.ref.Finalizer와 객체를 발견했습니다.
어떻게 서로 관련 될 수 있습니까? 심지어 관련 될 수 있을까요?
는
당신이 맞습니다. 내 질문에 단위를 업데이트했습니다. –
제가 궁금한 점은 이것이 어떻게 관련이 있는지입니다. 왜 'finalize()'문제가 메모리 변경 후에 만 발생했는지, 이것이 나는 새로운 세대와 늙은 세대 사이에 사용 된 배급량과 관련이 있습니까? –
@FranciscoSpaeth 메모리가 부족할 때 최종 리소스를 생성하는 응용 프로그램의 속도가 느려집니다. 멀티 스레드 일 수 있습니다. 더 많은 메모리를 확보하면 정리할 리소스를 더 많이 생성 할 수 있지만 단일 스레드 파이널 라이저는 유지할 수 없으므로 병목 현상이 발생합니다. 간단히 말해, 1 비트 속도를 높이면 성능 문제가 다른 곳으로 옮겨져 프로세스에서 문제가 발생할 가능성이 있습니다. –