조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05. 07. 비고
Index 1. 메모리구조인식의중요성 1) 메모리의정의 1 2) 메모리구조를공부하는이유 1 2. JAVA 프로그램실행구조 1) 일반프로그램과 JAVA프로그램 2 2) JVM이란? 2 3. JVM 메모리구조와과정 1) JVM 메모리구조 3 2) Runtime Data Area 3 1 Class Area 3 2 Stack Area 4 3 Heap Area 4 4 Native method stack area 4 5 PC Register 4 4. Garbage Collection 1) Minor Garbage Collection 5 2) Major Garbage Collection (Full Garbage Collection) 5 5. 소스예제 1 6 6. 소스예제 2 7 7. 소스예제 3 8 8. 참고문헌 9
1. 메모리구조인식의중요성 1) 메모리의정의 - 프로그램을실행하기위한데이터및명령어를저장하는공간 2) 메모리구조를공부하는이유 - 같은기능의프로그램이더라도메모리관리에따라성능이좌우됨 - 메모리관리가되지않은경우속도저하현상이나튕김현상등이일어날수있음 - 한정된메모리를효율적으로사용하여최고의성능을내기위함 - 1 -
2. JAVA 프로그램실행구조 1) 일반프로그램과 JAVA 프로그램 - 일반프로그램 : OS에서실행 - JAVA 프로그램 : JVM에서실행되고, JVM은 OS에종속적이다. 2) JVM 이란? - Java Virtual Machine - JAVA와 OS 사이에서중계자역할 - JAVA가 OS에구애받지않고재사용을가능하게해줌 - 메모리관리기능 (Garbage Collection) - 2 -
3. JVM 메모리구조와과정 1) JVM 메모리구조 - JAVA Source : 사용자가작성한 JAVA 코드 - JAVA Compiler : JAVA 코드를 Byte Code로변환시켜주는기능 - Class Loader : Class파일을메모리 (Runtime Data Area) 에적재하는기능 - Execution Engine : Byte Code를실행가능하게해석해주는기능 - Runtime Data Area : 프로그램을수행하기위해 OS에서할당받은메모리공간 2) Runtime Data Area 1 Class Area - Method Area, Code Area, Static Area 로불리어짐 i) Field Information : 멤버변수의이름, 데이터타입, 접근제어자에대한정보 ii) Method Information : 메서드의이름, 리턴타입, 매개변수, 접근제어자에대한정보 iii) Type Information : - Type의속성이 Class인지 Interface인지의여부저장 - Type의전체이름 ( 패키지명 + 클래스명 ) - Type의 Super Class의전체이름 ( 단, Type이 Interface이거나 Object Class인경우제외 ) - 접근제어자및연관된 interface의전체리스트저장 iv) 상수풀 (Constant Pool) - Type에서사용된상수를저장하는곳 ( 중복이있을시기존의상수사용 ) - 문자상수, 타입, 필드, Method의 symbolic reference( 객체이름으로참조하는것 ) 도상수풀에저장 - 3 -
v) Class Variable - Static 변수라고도불림 - 모든객체가공유할수있고, 객체생성없이접근가능 vi) Class 사용이전에메모리할당 - final class 변수의경우 ( 상수로치환되어 ) 상수풀에값복사 2 Stack Area - Last In First Out (LIFO) - 메서드호출시마다각각의스택프레임이생성 - 호출된메서드의매개변수, 지역변수, 리턴값및연산시일어나는값들을임시로저장 - 메서드수행이끝나면프레임별로삭제 3 Heap Area - new 연산자로생성된객체와배열을저장하는공간 - 클래스영역에로드된클래스만생성가능 - Garbage Collector를통해메모리반환 i) Permanent Generation - 생성된객체들의정보의주소값이저장된공간 ii) New Area - Eden : 객체들이최초로생성되는공간 - Survivor : Eden에서참조되는객체들이저장되는공간 iii) Old Area : New Area에서일정시간이상참조되고있는객체들이저장되는공간 4 Native method stack area - 자바외의다른언어에서제공되는메서드들이저장되는공간 5 PC Register - Thread가생성될때마다생성되는공간 - Thread가어떤부분을어떤명령으로실행할지에대한기록 - 현재실행되는부분의명령과주소를저장 - 4 -
4. Garbage Collection - 참조되지않은객체들을탐색후삭제 - 삭제된객체의메모리를반환 - Heap 메모리의재사용 1) Minor Garbage Collection i) New 영역에서일어나는 Garbage Collection ii) Eden영역에객체가가득차게되면첫번째 Garbage Collection 발생 iii) Survivor1 영역에값복사 iv) Survivor1 영역을제외한나머지영역의객체들을삭제 v) Eden영역과 Survivor1영역의메모리가기준치이상일경우, Eden 영역에생성된객체와 Survivor1영역에있는객체중참조되고있는객체가있는지검사 vi) 참조되고있는객체를 Survivor2 영역에복사 vii) Surviver2 영역을제외한영역의객체들을삭제 viii) 일정시간이상참조되고있는객체들을 Old영역으로이동 ix) 반복 2) Major Garbage Collection (Full Garbage Collection) i) Old영역에있는모든객체들을검사 ii) 참조되지않은객체들을한꺼번에삭제 iii) Minor Garbage Collection에비해시간이오래걸리고실행중프로세스가정지 - 5 -
5. 소스예제 1 Method 영역 Stack 영역 Heap 영역 - 6 -
6. 소스예제 2 Method 영역 Stack 영역 Heap 영역 - 7 -
7. 소스예제 3 Method 영역 Stack 영역 Heap 영역 - 8 -
8. 참고문헌 class loader GC GC GC Heap JVM memory 구조 Runtime area Runtime area Runtime area Runtime area Thread Thread JVM실행구조 JVM실행구조 http://hidka.tistory.com/18 http://sirius.pe.kr/v5/tt?page=2&tssession=11ebac6256a65e1b5349 9ee647d269da http://novathin.kr/m/14 http://blog.naver.com/wwgenii?redirect=log&logno=60510003 http://sanggu.blogspot.kr/2011/10/java-heap.html http://hidka.tistory.com/entry/the-java-language-and-jvm http://performeister.tistory.com/category/performance http://helloworld.naver.com/helloworld/1230 http://force44.blog.me/130095188664 http://cafe.naver.com/fordeveloper http://blog.naver.com/zzooki/90034976951 http://blog.naver.com/pslovejin?redirect=log&logno=50045585277 http://abacus.tistory.com/230 http://stophyun.tistory.com/37 http://hidka.tistory.com/entry/the-java-virtual-machinejvm http://blog.naver.com/0bloodwind0/20127908176 http://blog.naver.com/kmk1030?redirect=log&logno=150141683660 http://blog.naver.com/2000yujin?redirect=log&logno=130156226754 http://hidka.tistory.com/entry/the-java-application-interface http://gggura.egloos.com/3685556 http://www.jabook.com http://blog.naver.com/myca11?redirect=log&logno=80130599386 http://blog.naver.com/web4click?redirect=log&logno=110159692556 http://cafe.naver.com/jjdev - 9 -