몇 주 전에 JDK 6 (Java 1.6.0) 의 수정 버전인 update 2 가 발표 되었다. 사실, 발표 된 당일에 간단하게라도 내용을 정리하려고 마음을 먹었었지만, 이런 저런 핑계거리와 게으름에 발목을 잡혀 지금에서야 끄적거린다.
Release note를 살펴보면 기대에 부합되게도 새롭게 추가 된 기능은 단 한 개도 찾아 볼 수 없다.
솔직히 이야기 하면 Release note의 상당히 앞 쪽에 위치한 "Java DB"에 대한 부분에서 이번 update에 새로 추가된 것인 줄로 착각을 했었다. 사실 여부를 확인하기 위해 싸이트를 여기 저기 뒤적거리다 JDK 6의 초기 버전에 Early access 버전의 Java DB가 포함되어 있다는 것을 발견했다. 머리가 나쁘면 손발이 고생한다는 말이 떠오른다.
(참고로 JDK 6에 포함된 Java DB의 정체는 Apache Derby이다.)
- 메모리 누수 현상 해결
수정된 내용을 면밀히 살펴보면, 우선 가장 먼저 눈에 띄는 것은 메모리 누수(leak) 현상에 대한 부분이다. 단지, 특정 경우에 메모리 누수 현상이 발생했었다고 하지만, 메모리 누수로 문제가 터졌을 경우 해결하기가 매우 까다로운 현상이기 때문에 가장 반가운 내용 중 하나이다.
메모리 누수에 대한 내용은 총 4 개 이며, 독특한 것은 세마포어(Semaphore) 관련 메모리 누수 현상이다. 만약, 세마포어를 사용하여 작성한 code가 있다면 매우 치명적인 메모리 누수 현상을 보였을 것으로 추측된다. 더욱이 이 문제가 눈에 띄는 점은 update 1 에서 이미 해결 되었다고 발표 했었음에도 불구하고 실제로는 문제가 남아있었다는 것이다.
- JAVA 다운 문제 (Crash) 해결
역시 매우 치명적인 문제의 하나로 JVM이 아무런 이유 없이 다운 (Crash) 되는 현상이다. 이러한 Crash 문제에 대한 수정 사항은 모두 9 개 이다. 이 중 5 개가 Graphic 관련이라는 점이 주목해 볼만 하다. 이것은 Java2D나 AWT, JFC/Swing을 사용하는 프로그램일 경우 확률적으로 Crash 될 가능성이 더 높았다는 것을 시사해 준다.
- 성능 개선
애석하게도 성능 개선과 관련된 항목은 단 2 개뿐이다. 그나마 아쉬움을 조금 달랠 수 있는 것은 System.arraycopy () 함수의 성능 개선에 대한 내용이다. 서버 측 Code에는 System.arraycopy () 함수가 성능에 중요한 영향을 끼치는 부분에 종종 사용되는 것을 보게 되는데, 이 함수의 성능이 개선 되었다는 것은 은근히 기대를 해보게 만든다. 하지만, 실제 내용을 살펴보면 성능 개선이라기 보다는 기존에 비 정상적으로 성능이 떨어지는 현상을 해결한 것이라는 사실을 알 수 있다. 어찌 되었든 성능 개선은 반가운 소식임에 틀림이 없다.
- Java Plug-in 관련 수정
항목 수를 보면 비중이 그리 크지는 않지만, 내용을 살펴보면 Java Plug-in (혹은 Applet)과 관련되어 상당히 치명적인 문제들이 적지 않게 해결 되었다는 것을 알 수 있다. 결국, update 1에서는 Java Plug-in (혹은 Applet)을 구동 시키는데 많은 어려움이 있었다는 결론이다.
- 그 외의 내용들
- 결론 및 사족