static으로 선언된 HashMap의 경우 containsKey() 이후 해당 객체를 remove하면 삭제가 되지 않습니다. 너무 당연한 이야기인지도 모르겠습니다.
보통 삭제시킬 key값을 다른 메소드에서 로컬 변수 형태로 선언하고 그 값을 이용하여 삭제하려고 하는데 이 때 스태틱(static)메모리를 사용하는 경우 visible하지 않기 때문이겠지요.
이 경우 다음과 같이 키를 찾아 삭제해야 합니다.
if( tracer.containsKey(transactionId)) {
for (Iterator>> i= tracer.entrySet().iterator(); i.hasNext(); ) {
Map.Entry> entry= i.next();
if( entry.getKey().equals(transactionId)) {
i.remove();
}
}
}
http://www.javapattern.info/trackback/326





