19일차(수정요망) Thread/JVM/GarbageCollection//집데이트

2022. 5. 21. 11:11카테고리 없음

 

여친이 집에서 감바스에와인 차려줬다 사랑스러운이

 

 

 

-스레드(Thread)

한 가닥의 실

-멀티 스레드(Multi-Thread) 

하나의 프로세스가 두 가지 이상의 작업

멀티 프로세스 애플리케이션 단위      의 멀티 태스킹 이라면

멀티 스레드 애플리케이션 내부     에서의 멀티 태스킹

 

 

-메인 스레드(main thread)

메인스레드(main thread)가 main() 메서드를 실행하면서 시작

멀티 스레드를 생성

 

 

Thread 생성과 실행

java.lang.Thread 클래스를 객체화 해서 생성해도 되지만, Thread를 상속해서 하위 클래스를 만들어 생성

 

 

 

 

 

 

 

 

 

 

 

JVM

많은 객체가 생성되었다 사라지는 것을 반복JVM(Java Virtual Machine)

자바 프로그램을 실행시키는 도구

 

-운영체제로부터의 독립성은 JVM이라는 별도의 프로그램을 통해서 구현됩니다

 

 

프로그램이 운영체제에게 필요한 컴퓨터 자원을 요청하는 방식이 운영체제마다 다릅니다

이것이 바로 프로그래밍 언어가 운영체제에 대해 종속성을 가지게 되는 이유입니다

JVM이 자바 프로그램운영체제 사이통역가 역할을 수행합니다

 

 

컴파일 = .class인 클래스 파일이 만들어집니다.

클래스 로더가 클래스 파일을 불러들이면서 JVM실행

Runtime Data Area에 데이터가 들어가게 되며 프로그램이 실행

JVM에 Java 프로그램이 로드되어 실행될때 여기에저장됨

 

Person person = new Person();

new Person()이 실행되면 Heap 영역에 인스턴스가 생성되며, 인스턴스가 생성된 위치의 주소값을 person에게 할당해주는데, 이 person은 Stack 영역에 선언된 변수입니다.

-객체를 다룬다는 것은 Stack 영역에 저장되어 있는 참조 변수를 통해 Heap 영역에 존재하는 객체를 다룬다는 의미가 됩니다.

 

정리하자면, Heap 영역은 실제 객체의 값이 저장되는 공간

 

 

GarbageCollection

Heap 영역은..    객체는 일회성  //메모리에 머문 기간이 짧다

Heap 영역 안에서도 영역을 나누게 되는데 Young, Old영역 이렇게 2가지로 나뉩니다.

Young 

많은 객체가 생성되었다 새롭게 생성/ 많은 객체가 생성되고 사라지는 것을 반복

이 영역에서 활동하는 가비지 컬렉터를 Minor GC

Old

살아남은 객체들이 복사되는 곳  // 크기가 큰 만큼 가비지는 적게 발생

 

 

 

 

-가비지 컬렉션  2가지 단계

1.Stop The World

JVM이 애플리케이션의 실행을 멈추는 작업입니다. 가비지 컬렉션이 실행될때 가비지 컬렉션을 실행하는 쓰레드를 제외한 모든 쓰레드들의 작업은 중단되고, 가비지 정리가 완료되면 재개됩니다.

 

2.Mark and Sweep

사용되고 있는 메모리를 식별해서(Mark) 사용되지 않는 메모리는 제거(Sweep)하는 과정을 진행합니다.