|
몇주 전 회사의 동료가 추천한 Eclipse의 plug-in을 이제야 써봤다.
KeepResident Eclipse Plugin 예전부터 Eclipse를 minimize해두었다가 사용하려고 할 때 많이 버벅거리는 것이 Windows NT/2K/XP의 가상 메모리 관리 방식 및 Java의 메모리 관리 방식과 관계가 있는 줄 알고 있었지만, 그걸 plug-in으로 해결하는 방법이 있는 줄은 몰랐었다. 이 plug-in의 저자에 따르면 The performance of Eclipse (and other large Java applications) has long suffered due to the Windows virtual memory manager. Windows has a tendency to preemptively swap Java processes out of physical memory, even when there is still plenty of physical memory available. This interacts very poorly with Java processes, which do not have good locality and touch a lot of memory. The problem is exacerbated when Java performs garbage collection, which causes the Java process to touch lots of memory that has been paged out to disk. Ever had Eclipse randomly hang for 15-20 seconds? This is most likely the culprit.Kernel과 GUI가 분리되어 있는 UNIX와는 달리, Win32 계열의 커널에서는 프로그램이 minimize될 때 이 프로그램의 working set을 OS가 알아서 최소화시켜 버리기 때문에 약간의 파일 I/O만으로도 이 프로그램이 사용하던 메모리가 모두 discard되어 버리고, 이 때문에 프로그램이 다시 restore/maximize될 때 버벅거리는 것이다. Java의 경우엔 더군다나 클래스 파일, JIT된 네이티브 코드 및 오브젝트가 메모리에 여기 저기 흩어져 있고 특히 garbage collection이라도 하게 되면 전체 virtual memory를 다 랜덤 액세스하게 되므로 demand loading의 performance가 매우 나쁘게 되어 차라리 다시 띄우는 것이 더 나은 경우도 많게 되는 것이다. Windows의 작업 관리자에서 "최고 메모리 사용률"을 보이게 하고 Eclipse의 javaw를 선택한 후 Eclipse를 minimize해보면, "최고 메모리 사용률"은 그대로 있지만 "메모리 사용"은 많이 줄어드는 것을 볼 수 있는데, 위의 plug-in을 설치하고 나면 "최고 메모리 사용률"이 유지되는 것을 볼 수 있고, 충분히 체감도 할 수 있다. 하지만 working set을 유지하기 위해 VirtualLock()을 사용하는 것은 메모리가 충분하지 않은 컴퓨터에서는 전체 시스템의 성능에 많은 영향을 줄 수 있으므로 주의해서 사용해야 할 것 같다. NT 커널의 virtual memory가 swapping하는데 FIFO 알고리즘을 사용하기 때문에 성능이 좋지 않다는 얘기는 예전에도 들은 적이 있지만, 다른 대부분의 애플리케이션에서는 큰 문제가 안되기 때문에 꼭 OS만의 문제라고 치부하기는 어렵다. 마이크로소프트의 관련 설명을 보면 이를 피해가는 방법이 있는데 Sun에서는 Java 5.0에 와서야 선택적으로 이 방법을 사용할 수 있게 했다(System property sun.awt.keepWorkingSetOnMinimize="true". AWT가 아닌 SWT를 사용하는 Eclipse에는 적용 안됨). Eclipse나 다른 Java 기반의 프로그램 외에 Mozilla/Firefox의 경우에도 비슷한 문제가 있는데, 관심있는 사람들은 좀 길긴 하지만 이 bugzilla entry를 보면 많은 걸 배울 수 있다. 해결책에만 관심있는 사람은
MS에서 비록 선택적으로 피해가는 방법을 제공하고 있기는 하지만, 이러한 문제의 원인과 해결책을 별로 열심히 알리고 있는 것 같지는 않고 또 OS 레벨에서 이런 문제를 해결하기 위한 대책을 적극적으로 강구하는 것 같지도 않다. 이 문제의 가장 많은 영향을 받는 애플리케이션이 Java와 Mozilla/Firefox라는 것은 단순히 우연일까? 하인라인이 "Never attribute to malice which can be explained by stupidity."라고 했다지만 그게 Microsoft에도 적용되는 얘기일까? 사회 생활을 하다보니 오히려 "무지를 가장한 악의"도 많이 눈에 띄는 것 같다. 추가: 이상하게 이 글에만 자꾸 스팸 덧글이 붙어서 덧글 막습니다. ※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.
|
![]() by alphageek 이글루 파인더
카테고리
이전블로그
2006년 09월
2006년 07월 2006년 06월 2006년 05월 2006년 04월 2006년 03월 2006년 02월 2006년 01월 2005년 12월 2005년 11월 2005년 10월 2005년 09월 2005년 08월 2005년 07월 2005년 06월 2005년 05월 2005년 04월 2005년 03월 2005년 02월 2005년 01월 2004년 12월 2004년 11월 2004년 10월 2004년 09월 2004년 08월 2004년 07월 2004년 06월 2004년 05월 2004년 04월 이글루링크
이글루스 이야기
미친병아리가 삐약삐약 THX1138 남쪽계단 달의 끝을 보고 있었다... 블로그 옮김 -> fribirdz.. 로리!군의 잡다한 이야기 - Nerd's Life sjjung's blog: 慢之作 순간의 기록.log 우리 부부가 살아가는 .. Beyond Web 최근 등록된 덧글
likejazz님, 감사합..
by alphageek at 09/22 아쉽습니다. ㅠ.ㅠ by erehwon at 09/21 새 블로그 기대하겠습니.. by likejazz at 09/21 잘지내시죠? 언제나 좋은.. by 전성훈 at 08/07 저는 avbox(http://ww.. by alphageek at 06/29 혹시 어디서 장착하셨어요? by 멤피스 at 06/28 9857의 절반 가격 정도 되는 .. by alphageek at 06/18 호. 좋네요. 저도 아이팟.. by 멤피스 at 06/18 저도 한가람 가면 여기 꼭.. by OQQO at 04/24 이오공감 보고 들렀습니다.. by Glen at 04/20 최근 등록된 트랙백
Eclipse와 Firefox의 S..
by Good Luck !! PC통신 회사 '네이버'의.. by 16. garbage Eclipse나 Firefox를 mi.. by illb.net 완벽에 대한 충동 by Juno의 Coffeehouse 겉멋든 CEO들의 망신살 by Prismaticallization 2006년 4월 19일 이오공감 by 이오공감의 흔적 재미있.. by 류한석.. 윈도우 비스타의 한글 .. by 아크몬드의 비스타블로그 웹 클립보드 by Media Lab iTunes에서 Podcast.. by Alphageek Subscribed to:
|