본문 바로가기

Java , Spring/Java20

[Java] Garbage Collection Garbage Collection이란 가비지 컬렉션이란 자바의 메모리 관리 방법으로 JVM의 Heap영역에서 동적으로 할당된 메모리중 필요 없어진 메모리 객체를 자동으로 주기적으로 제거하는 프로세스이다. Garbage Collection의 장단점 장점 메모리 누수를 방지할수있다. 이미 해제한 메모리를 다시 해제하거나, 해제한 메모리에 다시 접근하는 오류들을 방지할수있다. 단점 개발자가 메모리가 언제 해제되는지 정확히 알수가 없다, 오버헤드로 인한 성능저하가 발생할수있다. Garbage Collection 대상 그렇다면 어떤 객체가 GC의 대상이 되는것일까? 객체는 Reachable과 Unreachable 로 나누어지는데 객체가 참조되고 있는 상태면 Reachable, 참조되고있지않으면 Unreachabl.. 2024. 1. 15.
[Java] JIT 컴파일러 (인터프리터와 컴파일) JVM을 공부하다 보니 JIT 컴파일러에 대해 나와 찾아보게되었다.https://bangbaeking.tistory.com/87 [Java] JVM , Java compiler, Java 코드 실행과정 JDK,JRE,JVMJVM이란? Java Virtual Machine 자바 가상 기계이다. Java는 운영체제에 종속적이지 않고, 작성된 Java 코드가 JVM에서 OS가 해석할수있는 bytecode로 변환해준다. ( OS에 종속적이지 않다 - 맥에서 작성된 Javabangbaeking.tistory.com 파이썬 같은 언어는 인터프리터 방식을 사용하고 한줄씩 기계어로 변환, C/C++은 컴파일러를 사용하고 한번에 전체를 기계어로 변환한다. 정도로 알고있었는데 Java는 어떤 방식으로 진행되는지, JIT .. 2024. 1. 12.
[Java] JVM 메모리 구조 java 파일이 자바 컴파일러에 의해 class 파일로 변환되고, class 파일이 Class Loader에 의해 JVM Runtime Data Area에 올라가면 실행엔진에 의해 실행된다. 관련 정리글 https://bangbaeking.tistory.com/87 [Java] JVM , Java compiler, Java 코드 실행과정 JDK,JRE,JVM JVM이란? Java Virtual Machine 자바 가상 기계이다. Java는 운영체제에 종속적이지 않고, 작성된 Java 코드가 JVM에서 OS가 해석할수있는 bytecode로 변환해준다. ( OS에 종속적이지 않다 - 맥에서 작성된 Java bangbaeking.tistory.com Class Loader, Execution Engine, G.. 2024. 1. 12.
[Java] String, StringBuffer, StringBuilder 차이 및 장단점 Java에서 문자열을 다루는 대표적인 클래스에는 String, StringBuffer, StringBuilder가 있다. 각 클래스의 차이점 및 장단점을 정리해보자. String vs StringBuffer / StringBuilder String과 StringBuffer/StringBuilder 클래스의 가장 큰 차이점은 String은 불변(immutable)이라는것이다. String 불변에 대해서는 아래 글에서 다루었다. https://bangbaeking.tistory.com/88 2024. 1. 10.
[Java] String 특징, String Pool Java에서 일반적인 데이터 타입의 비교는 == 연산자를 사용한다. 하지만 String에서는 ==이 아닌 equals 연산자를 사용한다. public class Test { public static void main(String[] args) { String str1 = "Hello"; String str2 = "Hello"; System.out.println(str1.equals(str2)); } } String 변수 생성 String 변수를 생성하는 방법은 2가지가 있다. String str1 = "Hello"; // 리터럴 방식 String str2 = new String("Hello"); // new 연산자 방식 str1 과 str2는 둘다 "Hello"를 저장하고있지만 메모리 관점에서 차이가 있.. 2024. 1. 10.
[Java] JVM , Java compiler, Java 코드 실행과정 JDK,JRE,JVM JVM이란? Java Virtual Machine 자바 가상 기계이다. Java는 운영체제에 종속적이지 않고, 작성된 Java 코드가 JVM에서 OS가 해석할수있는 bytecode로 변환해준다. ( OS에 종속적이지 않다 - 맥에서 작성된 Java 코드는 윈도우에서 돌아간다) 실행과정 Java 코드 (Test.java)는 먼저 JVM이 인식할수있는 Test.class 파일(바이트코드)로 변환해야한다. 자바 컴파일러가 Test.java 파일을 Test.class (바이트코드)로 변환해준다. 이후 JVM의 Class Loader가 .class 파일을 불러와서 Java의 메모리에 올려놓으면 JVM의 실행엔진에서 실행한다. (자바 컴파일러 - JDK를 설치하면 bin 파일에 존재하는 javac.exe 파일) 즉.. 2024. 1. 9.
[Java] next(), nextLine() 차이 다시 Java 기초를 공부하면서 예전에 헷갈렸던 부분을 정리하게되었다. next() 공백을 기준으로 문자열을 입력받는다 버퍼에 입력된 문자열에서 개행문자(\n)를 가져오지 않는다. nextLine() 개행문자 직전까지의 문자열을 입력받는다. (공백을 포함한다) 버퍼에 입력된 문자열에서 개행문자(\n)를 가져온다. 개행 문자를 가져온다는것이 무슨 뜻일까 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1,str2; System.out.println("str1 입력"); str1 = sc.next(); System.out.println("str2 입력"); str2.. 2024. 1. 7.
[Java] Optional Optional 이란 Java 8 부터 지원하는 NullPointerException을 방지할 수 있도록 도와주는 Wrapper 클래스이다. NullPointerException 이란 값이 없는 null을 가지고 있는 객체 또는 변수를 호출할때 발생하는 예외이다. // NullPointerException 발생 private Scanner scanner; public f(){ int a = scanner.nextInt(); System.out.println(a); } // NullPointerException 해결 private Scanner scanner; public f(){ if(scanner == null){ scanner = new Scanner(System.in) } int a = scanne.. 2023. 9. 15.
[Java] Thread(쓰레드) 생성, 실행 Thread 생성방법 1. Thread class를 상속받아 run() 메서드 재정의 2. Runable interface를 구현( 추상메서드run() 구현 ) -> Thread 생성자로 Runable 객체 전달 Thread 실행 방법 Thread class의 start() 메서드 호출 주의 사항 재정의한 메서드는 run()이지만 실행은 start() 메서드를 통해 호출한다. Thread 객체는 재사용이 불가능하다. 생성방법 1. Thread class를 상속받아 run() 메서드 재정의 public class Thread1 extends Thread{ @Override public void run(){ String[] strArr = {"가","나","다","라","마"}; for(int i=0; i 2023. 5. 14.