일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 운영체제
- 연결리스트
- jpa n+1 문제
- 프로세스
- 이분탐색이란
- 최대 힙
- MSA
- 백준장학금
- 연결리스트 종류
- spring
- 완전이진트리
- 엔티티 그래프
- JPA
- 점근적 표기법
- JVM
- posix
- python
- heapq
- 자료구조
- 멀티프로세서
- Kruskal
- 최소힙
- 백준 장학금
- 강화학습
- SpringSecurity
- 알고리즘
- AVL트리
- HTTP
- 힙트리
- 스케줄링
- Today
- Total
목록JVM (4)
KKanging

GC이란C/C++ 같은 OS 의존도 높은 Native 언어와 Java 언어의 차이C/C++ 같이 프로그램 한 언어가 직접 OS가 실행하는 언어들은 Memory Leak 문제를 많이 겪는다. Memory Leak 란? “동적으로 할당한 메모리가 free(할당 해제)될 수 없는 상태가 된 것.” 이다. 즉, C/C++ 같은 Native 언어들은 heap을 할당하고 해제하는 해동을 오로지 개발자들의 코드로 이루어진다. 따라서 이러한 heap 메모리 관리를 잘못하여 동적으로 할당한 메모리가 더이상 free 할 수 없어서 사용하지도 않는 데이터가 메모리를 차지하여 성능 저하 및 심하면 프로그램 강제 종료가 되는 상황을 말한다. Java 언어에서는 메모리 해제한 적 없는데? 위 문제를 보고 이런 생각이 들 것이다...

JVM의 클래스 로딩 과정JVM 의 바이트 코드 실행 전체 구조자바 소스 파일을 컴파일 하여 자바 바이트 코드로 변환하면 제일 먼저 메인 메서드의 클래스가 클래스 로더에 의해 로드 된다.클래스 로더에 의해 클래스의 정보 멤버 변수, 전역 변수, 상수, 메서드,, 등등이 Method Area에 점유하게 된다.실행 엔진에 의해서 실행을 한다이때 실행을 진행하다가 클래스가 참조 되어 있는 부분을 발견하면 클래스 로더로 로드 된 클래스인지 확인한다 (로드 된 클래스라면 그냥 Method Area에 가져다 쓸 것)만약 로드 되지 않았다면 클래스 로더가 해당 클래스를 로드하고 초기화 한다.다음 모든 경우에 클래스를 로드하고 초기화 한다.생성자 호출(클래스 생성)클래스의 메서드 호출(당연)클래스의 전역 메서드 호출클..

JVM Run Time Data AreaJVM 전체 구조JVM 은 다음 구조를 따른다Javac 가 컴파일한 자바 바이트 코드(.class) 를 Class Loader가 Load 한다.→ Load 할때Run Time Data Area 에 올린다.Load 된 데이터를 기반으로 Execution Engine (실행 엔진) 은 프로그램을 실행한다.실행할때 RunTimeDataArea를 실행시에 메모리로 사용하는데 이를 RunTimeDataArea 를 사용한다.이때 GC 가 힙 메모리에 불필요한 메모리를 삭제하고 메모리 주소 관리를 하는 등에 작업을 한다. RunTime Data AreaJVM의 메모리 구조이다.JVM이 실행되면 OS로 부터 메모리를 할당 받고 JVM은 메모리를 위 구조로 나누어 용도에 맞게 사용..

JDK, JRE, JVM 의 구분JVMJVM은 Java Virtual Machine 의 약자이다. 단순하게는 컴파일러라고 생각할 수 있음 하지만 C/C++ 같은 한번 컴파일로 번역하는 것이 아닌 .class 파일로 컴파일 한 후 JVM 이 한줄한줄 읽는 인터프리터 역할을 하면서 컴파일러가 많이 사용하는 코드는 미리 번역해놓는인터프리터 + 컴파일러 역할을 한다.추가로 JVM 은 메모리 관리 ( GC ) 그리고 최근에는 User 레밸 스케줄링의 역할도 관여한다. JAVA 의 모토는 "Write Once, Run Anywhere"(한 번 작성하면 어디서나 실행 가능) 현대의 언어는 웬만해서는 OS의 종속적이지 않지만 당시 java 의 위 슬로건은 혁명이었다.java 의 슬로건을 현실화 해준 것이 JVM이다.J..