출처
http://java.sun.com/developer/technicalArticles/Networking/HotSpot/inlining.html
JVM에서 메소드 인라이닝이란, JVM이 메소드를 바로 호출하지 않고, 바로 그 자리에 리턴된 상수값또는 메소드를 넣어서 최대한 속도를 높이는 것을 말한다.
특징은 다음과 같다.
"a.foo()+2"
becomes 5 with no code executed at runtime.
과거에는 final을 추가하여 inlining이 하도록 지시하게 하여 속도를 최대한 높일 수 있도록 하였다는 점이 주목적이다.
(임베디드에서는 final이 필수적이다. 속도 빠르게 해야 와따니까.)
하지만, 이런 테크닉이 모듈화에 적잖이 부담을 줄 수도 있다.
그런데 말이지. HotSpot JVM은 final로 선언하지 않아도 알아서 inlining이 가능하다.
모든 클래스들이 로딩할때마다 inlining을 하다가, 체크를 해보고 아니다 싶으면, 다시 도로 푸는 작업을 한다고 한다. deoptimized를 한다고 표현하고 있다.
On every class load, all these assumptions are checked and, if violated, the now-incorrect compiled code is retired (deoptimized).
'java core' 카테고리의 다른 글
<img src="http://blogimgs.naver.com/nblog/ico_scrap02.gif" class="i_scrap" width="50" height="15" alt="링크스크랩" /> [ Enterprise Java는 거대한 동기화 머신이다 - GC ] E.. (0) | 2009.01.24 |
---|---|
FreeMarker 바로 간단 사용하기 (0) | 2008.12.31 |
메모리 덤프 뜨기 (0) | 2008.09.23 |
자바 튜닝 관련 (0) | 2008.08.27 |
자바 Security 알고리즘 보기 (0) | 2008.06.20 |