물론 JVM 옵션 튜닝만 한다고 해서 답은 안나오겠지만,
튜닝할게 더이상 없다면, JVM 버젼 upgrade 및 옵션 튜닝을 해야 할 것이다.
아래는 이 글의 목차다.
뭐 다 읽기 귀찮으신 분들은 4.2 부터 적용해 보시면 된다.
1 Introduction
1.1 Goals
1.2 This is a Living Document
1.3 How to Use this White Paper
2 Best Practices
2.1 Use the most recent Java™ release
2.2 Get the latest Java™ update release
2.3 Insure your operating system patches are up-to-date
2.4 Eliminate variability
3 Making Decisions from Data
3.1 Beware of Microbenchmarks!
3.2 Use Statistics
3.3 Use a benchmark harness
4 Tuning Ideas
4.1 General Tuning Guidelines
4.1.1 Be Aware of Ergonomics Settings
4.1.2 Heap Sizing
4.1.3 Garbage Collector Policy
4.1.4 Other Tuning Parameters
4.2 Tuning Examples
4.2.1 Tuning Example 1: Tuning for Throughput
4.2.2 Tuning Example 2: Try the parallel old generation collector
4.2.3 Tuning Example 3: Try 256 MB pages
4.2.4 Tuning Example 4: Try -XX:+AggressiveOpts
4.2.5 Tuning Example 5: Try Biased Locking
4.2.6 Tuning Example 6: Tuning for low pause times and high throughput
4.2.7 Tuning Example 7: Try AggressiveOpts for low pause times and high throughput
5 Monitoring and Profiling
5.1 Monitoring
5.2 Profiling
6 Coding for Performance
7 Pointers
8 Feedback and the Java Performance Community
58 page 밑에서 7번째 줄 :
수행이 되어야 하므로 ==> 문제되는 메소드가 수행되어야 하므로
62 page 위에서 8번째 줄 :
이 부분은 ==> 네이티브 라이브러리는
68 page changeMessage ( ) 메소드에...(이 내용은 2쇄에도 반영 안되어 있음 - -):
currentName=new StringBuffer(); 를 메소드의 윗 부분에 추가...
75 page 밑에서 4번째 줄 :
StrinbBuffer ==> StringBuffer
로 변경
107 page 하단 소스 (2 쇄에도 반영 안되어 있음):
for(...;i < treeSet2.size(); ...) ==>
for 문 윗줄에 int treeSet2Size=treeSet2.size();
for(...; i < TREESET2SIZE ; ... )
으로 변경
114 page 두번째 소스:
catch 앞에 ] ==> }
로 변경하고
가장 하단에 } 추가
137 page 밑에서 8번째 줄:
두 가지 방식으로 사용할 수 있다. 이 메소드는 매개변수를 지정해야 한다. ==> 이 메소드는 다음과 같은 두 가지 방법으로 매개변수를 지정해서 사용한다.
196 page 위에서 8번째 줄:
해당 담 감사합니다. ==> 해당 담당자는 엄중 문책하겠습니다. 감사합니다.
Tomcat 5.5의 최신 버젼에서는 JConsole 모니터링이 안되도록 지정되어 있다. 이러한 문제를 해결하기 위해서, Tomcat의 catalina.bat나 .sh 파일의 JAVA_OPTS에 다음과 같은 옵션을 추가해 주어야 한다. -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
드디어 기다리던 Blog2Book 3호점 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기의 2쇄가 나왔습니다. 2쇄가 나오면서 드릴 말씀이 많지만.... 그동안 하고 싶었던 몇가지만 말씀드리겠습니다.
드리는 말씀 1 가장 먼저 드리고 싶은 이야기는 저자는 책을 내기 전에는 정신 수양을 미리 해야한다는 사실을 알았습니다. ^^; 책이 잘 팔려서 기분이 좋기는 하지만, 악평들 때문에 기분 나쁜건 어쩔 수 없더군요.
드리는 말씀 2 그래도 이 책을 내면서 기본적인 목적은 이뤘습니다. - 적어도 2쇄 찍기 (제 책이 나올 수 있도록 도와 주신분들에게는 2쇄가 나와야 본격적인 이득이 되기 때문에 ...) - 검색엔진에서 "자바 성능 튜닝"을 치면 제 책이 나오게 하기 (구글이나 네이버, 야후, 엠파스에서 한번 쳐 보시면 압니다. ^^)
드리는 말씀 3 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기는 제 첫 책입니다. (번역본과 멀티 캠퍼스 교재를 제외한...) 일반 서점이나 온라인 서점에서 팔리는 그런 책은 처음 쓴 셈이죠. 제 책에 대한 좋은 평들도 많이 있습니다. 그런 글을 블로그나 온라인 서점 사이트에 올려주신 분들에게는 이 글을 통해서 정말 고맙다고 말씀 드리고 싶습니다.
드리는 말씀 4 제 책에 대한 악평을 쓰신 분들에게는 아무말도 하지 않겠습니다. (그와 관련된 글을 몇번 썼다가, 지웠다가 했지만, 똑똑하신 여러분들의 이야기가 다 맞겠지요. ^^; 물론 제가 실수한 부분도 있긴 합니다. ㅋㅋ 2쇄에서 수정된 부분과 오타에 대해서는 조만간 정리 해서 올리겠습니다.)
드리는 말씀 5 제 책을 앞으로 사실 분들에게는 몇 마디만 말씀 드리겠습니다. (참고로 저는 초급, 중급, 고급 개발자의 기준은 모르겠습니다만 저는 제가 고급은 안되고, 중급 정도는 된다고 생각합니다. 초보는 아니니까 ^^) 본인이 고급이라고 생각하시는 분들중 성능에 대한 정리를 하고 싶은 분만 구매하셨으면 합니다. 절대 제 책은 고급 분들을 위한 책이 아닙니다. 제가 고급이 안되기 때문에 제가 쓴 책을 고급 분들이 보시면 안돼겠지요. 이제 갓 자바를 배우고 실무를 시작하시려는 초보 분들이라던지, 어느 정도 개발 경험이 있는데 자바 성능에 대한 궁금증을 어느 정도 확인하고 싶은 분들이 제 책을 구매하시기 바랍니다. 제가 책을 쓴 이유중 하나가 이겁니다. 매번 프로젝트에 갈때마다 로그 빼라, 스트링 잘써라 등등을 반복하는 것이 너무나 힘들고 싫었습니다. 그런 내용을 쓰다보니 자바 초보 분들을 위해서 기본적인 API에 대한 설명을 넣어야 이해가 쉽겠더군요.
제 책은 웹 시스템에서의 WAS에서 성능에 영향을 주는 부분을 어떻게 코딩해야 하는지를 정리한 책입니다. WAS자체를 개발하고, 코어 부분을 튜닝하는(0.01 ms가 중요한 그런)분들이 읽어야 하는 그런 책이 아닙니다. 그런 분들은 자바 언어 스펙 (번역본이나 원서), 이펙티브 자바, 자바 퍼포먼스 튜닝(한빛에 번역서가 있습니다.)등을 읽으시면 더 도움이 많이 될것 같습니다.
긴 글 읽어 주셔서 감사합니다.
PS : 만약 "자바 성능을 결정짓는 코딩 습관과 튜닝 이야기"의 5쇄가 나온다면, "자바 성능을 결정짓는 코딩 습관과 튜닝 그 두번째 이야기"로 보다 심도 깊은 이야기를 할까 생각하고 있습니다. ^^;