2009. 1. 9. 13:02 IT가
code 테이블의 WAS 메모리 load에 대한!!
WAS load 시에 Singleton 패턴으로 테이블 데이터에 load 하고 사용을 한다.
그런데 메모리에 올리려고 하면 class 를 생성시 static 으로선언을 해야만 공유하여 사용을 할수가 있다.
static 은 초기 메모리 할당을 하게되면 항상 동일한 메모리만을 할당하여 사용한다고 하는데,
문제가 되는경우가 있다.
hotdeploy 인경우이다.
이놈이 보니 hotdeploy 를 하게 되면 static class 에 대해서 GC 도 또한 finalize 도 (뭐 동일한 애기지만...)
대상이 아니라서 날아가지가 않는다... 그래서 instance 가 하나가 더 생성이 된다.
Jprofiler 로 확인을 해보면 해당 class 가 hotdeploy 시 기존거는 날아가지 않고 새로 한개가 더 생성하는것을 볼수있다. static 으로 생성하는 class 는 모두 그렇다!!...
이 우찌해야 하는 것인가.. 대부분 restrart 를 하기때문에 문제점을 발견할수가 없었는데, hotdeploy를 하면서 문제가되는 현상을 감지했다!!..
아무리 찾아봐도 사용하지 않는 static class 를 삭제할수 있는 방법도 없고... GC 대상도 아니어서..
그렇다고 static 을 제거하면... 공유가 안되서... 사용을 못하고. 그렇다고 back office 에서 화면당 코드테이블데이터를 10~20 개 정도를 사용하는데 매번 db access 를 할수도 없고...
흠... 누구 시원한 관리방안을 가진사람이 있나요??
(...결국 restart로 가기로 했습니다...)
'IT가' 카테고리의 다른 글
ie8.0 Release Candidate 1 후기! (0) | 2009.03.10 |
---|---|
완성형 한글 이외의 글자 사용에 따른 시스템 데이터 오류! (0) | 2009.01.05 |
유용한 오픈소스들 (0) | 2008.09.23 |