코드스테이츠 BE 19일차 - Java 스레드

coding infant·2022년 7월 19일

코드스테이츠BE

목록 보기
19/48

스레드 : 프로세스 내에서 실행되는 소스 코드의 실행 흐름

싱글 스레드 프로세스, 멀티 스레드 프로세스(동시 작업 가능)

프로세스 : 실행 중인 어플리케이션. 데이터, 컴퓨터 자원, 스레드로 구성

스레드는 데이터와 어플리케이션이 확보한 자원을 활용하여 소스 코드를 실행

스레드의 생성과 실행 두 가지 방법

  1. Runnable 인터페이스를 구현한 객체에서 run()을 구현하여 스레드를 생성하고 실행

  2. Thread클래스를 상속받은 하위 클래스에서 run()을 구현하여 스레드를 생성하고 실행

[JVM]

Java Virtural Machine 자바로 작성한 소스 코드를 실행하는 별도의 프로그램

각 운영체제에 맞는 버전 존재.

참고 사이트

https://deepu.tech/memory-management-in-jvm/

🚀 Visualizing memory management in JVM(Java, Kotlin, Scala, Groovy, Clojure)
Let us take a look at how the JVM manages memory.

deepu.tech

JVM 안에서 스택 영역 : LIFO. 메서드 동작 완료되면 역순으로 제거됨

Heap 영역 : 객체나 인스턴스 변수, 배열이 저장

Person person = new Person();
// Heap영역에 인스턴스 생성, 인스턴스 주소값은 person에 할당.
[Garbage Collection]

메모리 자동으로 관리하는 프로세스

Person person = new Person(); // person은 Person 클래스의 인스턴스 주소값 할당받음
person.setName("김코딩"); // "김코딩" 문자열이 인스턴스의 name에 할당
person = null; // 가비지 발생. 인스턴스와 참조변수의 연결 끊어짐
person = new Person();
person.setName("박해커");
Young 영역, Old 영역 존재

Young 영역 : Minor GC. 새롭게 생성된 객체가 할당되는 곳

Old 영역 : Major GC. Young 영역에서 살아남은 객체들이 복사되는 곳.

0개의 댓글