플러그인로드 메커니즘이있는 webapp를 개발 중입니다. 플러그인은 별도의 jar 파일에 있으며 각 파일마다 별도의 URLClassLoader
으로로드됩니다. 내 앱을 여러 번 재배포 할 때 언젠가 OutOfMemoryError
이됩니다.내 응용 프로그램을 다시 배포 할 때 OutOfMemoryError
URLClassLoader
은로드 된 클래스에 대한 참조가 여전히 존재하므로 가비지 수집 할 수 없기 때문에 읽은 것입니다.
앱을 다시 배포 할 때 어떻게이 참조를 릴리스 할 수 있습니까?
이 앱은 개발중인 Jetty와 프로덕션 환경 인 Tomcat에서 실행됩니다. Tomcat은 또한이 메모리 누수에 대해 알려줍니다.
자신이 굴린 것을 사용하는 대신 OSGi를 사용하여 플러그인/번들을 관리하는 것을 고려해보십시오. 그것을 적용하는 법을 배우기위한 투자이지만, 결국에는 자신을 유지할 필요가없는 입증 된 기술을 사용하는 것으로 끝납니다. – Gimby