1 / 18

JAVA VIRTUAL MACHINE INTERNAL

JAVA VIRTUAL MACHINE INTERNAL. YS&MJ Project. 2013. 07. Jvm 특징. Stack based machine Typed value Multi thread machine Object Oriented Support Runtime binding. Jvm internal architecture. CLASS LOADER. CLASS LIB. CLASS FILE. RUNTIME DATA AREA. METHOD AREA. JAVA STACK.

ham
Download Presentation

JAVA VIRTUAL MACHINE INTERNAL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JAVA VIRTUAL MACHINEINTERNAL YS&MJ Project 2013. 07

  2. Jvm특징 • Stack based machine • Typed value • Multi thread machine • Object Oriented Support • Runtime binding

  3. Jvm internal architecture CLASS LOADER CLASS LIB CLASS FILE RUNTIME DATA AREA METHOD AREA JAVA STACK NATIVE METHOD STACK HEAP PC REGISTER EXECUTION ENGINE NATIVE INTERFACE NATIVE LIBRARIES

  4. Class loader 특징 On-demand loading( 처음으로 사용될때 클래스를 적재한다. ) 정적 변수를 초기화 해준다. Link를 위해 적재된 클래스 내의 심볼 참조를 링크한다. 직접적으로 주소를 사용하지 않는다. 직접주소를 사용하지 않음으로써 machine independent에 도움이 된다고한다. ( JVM에만 의존적이게 만들려는 의도로 파악된다. )

  5. RUNTIME CONSTANT POOL 메소드와필드에 대한 모든 레퍼런스를 담고 있는 테이블이다. JVM은 메소드, 필드의 참조를 위해 이 상수 풀을 사용한다. 엄밀히 말하자면 메소드 영역에 포함되는 영역이지만 JVM을 통한 동작에 매우 중요한 역할을 한다. 컴파일러를 만들시에 사용되는 심볼테이블과 유사하다고 생각하면 이해하기가 쉽다.

  6. JAVA application RUN FLOW 실행환경 설정 및 초기화 OS로부터 Heap을 할당 Object, Class, String, Thread등의 클래스 load 프로그램 시작 클래스 load Main method호출을 통한 프로그램 시작

  7. Garbage collection GC의 역할 Heap 혹은 Method Area에 있는 Object를 Memory에서 삭제. GC의 배경철학 대부분의 객체는 금방 unreachable이 된다. 생성된지 오래된 객체에서 금방 생성된 객체로의 참조는 매우 드물다. GC의 동작 방식 Stop-the-world를 통해 GC를 수행한다. GC를 수행하기 위해 JVM이 애플리케이션의 수행을 멈추는 것을 의미한다. GC를 수행하는 쓰레드를 제외한 모든 쓰레드를 멈춘다.

  8. Garbage collection( heap ) Young Generation : JAVA객체가 생성되자마자 저장되고, 생성된지얼마안된 객체가 저장되는 위치. 시간이 지남에 따라 old영역으로 옮겨지게 된다. Old Generation : Young Generation영역에 있다가 오래된 객체가 이동되어지는 영역 Perm : Class, Method등의 Code등이 저장되는 영역

  9. Garbage collection( 동작 ) 객체가 Eden 영역에 생성된다( memory allocation 된다 ) Eden영역의 사이즈가 모자라게 되면 GC는 살아남아야 할 녀석들을 S0영역으로 이동. Eden 영역에 대해 해제 작업( 이때 S1 영역도 해제 됨 ) Eden영역이 다시 새로운 개체들이 생성됨. 다시 Eden 영역에 메모리 공간이 부족하게 되면 S1으로 필요한 개체를 복사 Eden과 S0을 해제 처음부터 계속 반복

  10. Java code execution

  11. JAVA BYTECODE 8 bit Opcode Stack 기반의 실행 Operand 스택을 사용. 명령어 수행 전 Operand를 스택에 넣고, 결과도 스택에 저장함. JVM에서 Register는 없으며 지역변수를 사용함. 오퍼랜드 타입을 명시함 예 : iadd ( 정수 덧셈 ) 복잡한 가상 OPCODE 제공 - 메모리 할당 - 모니터/쓰레드 동기화 - 메소드 호출 등등

  12. JAVA BYTECODE 바이트 코드는 각각 타입에 대해 따로 존재한다.( iadd, isub, istore … ) 이러한 구조를 통하여 실행 전에 타입체킹이가능한다. 타입 접두어가 붙지 않는 명령어 들도 있다. ( pop, dup, invokevirtual, … )

  13. JAVA BYTECODE

  14. JAVA BYTECODE – original code

  15. JAVA BYTECODE Javac를 이용해 컴파일 Javap –classpath . –c –verbose 클래스명

  16. JAVA BYTECODE

  17. REFERENCE http://www.acloudtree.com/hacking-java-bytecode-for-programmers-part3-yes-disassemble-with-javap-all-over-the-place/ http://blog.naver.com/johnforstar?Redirect=Log&logNo=30107008996 http://en.wikibooks.org/wiki/Java_Programming/Byte_Code

  18. Q&A

More Related