[자바 (JAVA)] 4. JVM 사전 지식

귤's avatar
Feb 06, 2025
[자바 (JAVA)] 4. JVM 사전 지식
변수 ( nt, double, boolean, String)
static (main이 실행되기 전에 로드된다.) - 공간 분리 (class 별로 분리되어 있음)
static은 정적이고, 한 개만 메모리에 로드된다.
메서드(method) (함수) - 4가지 유형 (기본, 인수가 1개, 인수가 여러 개 있는, 리턴이 있는) - void (리턴이 없는)
 

1. heap

프로그램이 실행되고 있는 중간에 데이터를 불러올 때 그 데이터가 만들어지는 영역이다.
package jvm; // 번호, 이름, 나이 class Student { int no; String name; int age; void show() { // 함수 호출 (부르지 않으면 나오지 않음) System.out.println(no); System.out.println(name); System.out.println(age); System.out.println(); } } public class Heap01 { public static void main(String[] args) { Student s1 = new Student(); // new가 되면, static이 붙지않는 모든(변수, 메서드)가 heap에 로드 된다. s1.no = 1; s1.name = "홍길동"; s1.age = 20; s1.show(); Student s2 = new Student(); // new 했기 때문에 s1과 같을 수 없음, 다른 공간임 s2.no = 2; s2.name = "임꺽정"; s2.age = 24; s2.show(); Student s3 = new Student(); s3.no = 3; s3.name = "이춘향"; s3.age = 30; s3.show(); } }
notion image

2. stack (자료구조)

First In Last Out = FILO
한 쪽 끝에서 데이터가 들어오면 나중에 들어온 데이터부터 빠져나가는 형식이다.
즉, 먼저 들어온 데이터는 마지막에 나가는 것
notion image
package jvm; public class Stack01 { static void m1() { int a = 1; m2(); // 7번라인 - 이 순간엔 변수 a와 b가 떠 있다. } static void m2() { int b = 1; } public static void main(String[] args) { System.out.println("10번 라인"); m1(); System.out.println("12번 라인"); } }

StackOverFlow Error

Stack 영역의 메모리가 지정된 범위를 넘어갈 때 발생한다.
  • 오류는 위에서 터져서 밑으로 내려 오는 것이다.
package jvm; public class Stack02 { static void m1() { int a = 1; m1(); // 재귀 함수 } public static void main(String[] args) { m1(); } }
notion image

3. pueue

  • First In First Out = FIFO
  • 한쪽 끝에서 데이터가 들어오면 반대 쪽 끝에서 데이터가 나가는 형식이다.
  • 즉, 선입선출
notion image
package jvm; public class Queue01 { static void m1() { int n1 = 1; System.out.println("🚒"); System.out.println("🏍️️"); System.out.println("🚲"); m2(); // 16번 라인으로 점프(이동) System.out.println("🚅"); System.out.println("✈️"); } static void m2() { int n2 = 2; System.out.println("🍕"); System.out.println("🍔"); System.out.println("🌭"); System.out.println("🥚"); System.out.println("🧀"); } public static void main(String[] args) { System.out.println("main 시작"); m1(); // 호출 하면 내가 생각한 순서: 소방차->오토바이->자전거->피자->햄버거->핫도그->계란->치즈->기차->비행기 System.out.println("main 종료"); } }
notion image

4. 참조 자료형

notion image
 
Share article

gyul