JAVA final 키워드
2022. 6. 1. 17:03
개발 저장소/Java Inventory
final 변수 상수로써 사용된다. 변수를 선언과 동시에 초기화하며 이후에 값을 수정할 수 있다. Get 만 가능하다 (Set 불가) final 메서드 오버라이딩 불가능 상속받은 그대로 사용 final 클래스 상속 불가 Subclass 를 만들 수 없다.
JIT Compiler
2022. 5. 31. 16:54
개발 저장소/Java Inventory
[ JIT Compiler 란? ] JAVA 의 성능을 증대시키기 위한 런타임 환경의 요소이다. 런타임 중, 바이트 코드를 기계어 코드로 컴파일 해준다. [ JIT Compiler 개요 ] 개요 1. JAVA 프로그램은 다양한 컴퓨터 구조(OS) 에서 JVM 이 인터프리팅 할 수 있는 바이트 코드를 가진 클래스로 구성된다. 개요 2. 런타임 환경에서, JVM 은 클래스 파일을 로드하고, 각 개별 바이트 코드의 의미를 결정하고 적절한 계산을 수행한다. 개요 3. JIT 컴파일러는 런타임 때, 바이트코드 -> 기계 코드로 컴파일하여 JAVA 프로그램의 성능을 개선하는데 도움이 된다. 개요 Final. 인터프리터 : Java Code -> Bytes Code JIT 컴파일러 : Bytes Code -> Mac..
Generic In Java
2022. 5. 24. 05:28
개발 저장소/Java Inventory
Step 01. 제네릭 소개 - 제네릭은 왜 필요한가? 제네릭을 사용하지 않을 때 MyCustomList.java public class MyCustomList { public void addElement(T element) { list.add(element); } }위와 같은 메서드를 사용하기 위해서는 String 타입을 매개변수로 꼭 넣어주어야한다. 만약 String타입이 아니라, Integer, Boolean 등 다른 자료형이 접근하면 오류가 생기게 된다. Step 02. 사용자 정의 리스트를 위한 제네릭 구현 제네릭을 사용할 때 MyCustomList.java public class MyCustomList { public void addElement(T element) { list.add(elem..
Garbage Collection In Java
2022. 5. 23. 19:25
개발 저장소/Java Inventory
Garbage Collection Garbage Collection 이란? Java 프로그램에서, 자동으로 메모리를 관리해주는 과정이다. C/C++ 와 달리, 프로그래머는 객체의 메모리 할당과 해제를 신경 쓸 필요가 없다. Garbage Collection 이 데몬 쓰레드의 형태로 수행해주기 때문이다. Garbage Collection 배경 Java 코드는 JVM 에 의해 ByteCode 로 컴파일된다. Java 프로그램이 JVM 에서 실행될 때 객체는 힙에 저장된다. 이때 일부 객체들은 더 이상 힙에 존재할 필요가 없어질 때가 오게 된다. 이때 Garbage Collection 이 사용되지 않는 객체들을 찾아 제거한다. Garbage Collection 동작 과정 Garbage Collection 은 ..
JVM 구조, JVM 메모리 구조
2022. 5. 22. 03:38
개발 저장소/Java Inventory
JVM JVM 이란? Java Code 나 Application 을 실행시키기 위한 런타임 환경을 제공해주는 엔진이다. Java 코드를 ByteCode 로 변환해준다. JVM 은 Java Runtime Environment(JRE)의 일부이다. 다른 언어의 컴파일러와는 다르게, Java 컴파일러는 JVM 이 인식할 수 있는 코드를 생성해낸다. JVM 기능 Java 코드를 ByteCode 로 변환한다. (ByteCode 는 인터프리팅 된다.) JVM 은 메모리 공간 할당을 담당한다. Java Code JVM System Working of Virtual Machine (JVM) Class Loader -> Byte Code Verifier -> Execution Engine JVM 구조 https://ww..
AOP in Spring
2022. 5. 19. 18:37
개발 저장소/Spring
AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶을 때 공통 관심사항 vs 핵심 관심사항 회원 가입 시간, 회원 조회 시간을 측정하고 싶을때 문제 1. 회원가입에서 시간을 측정하는 기능은 핵심 관심 사항이 아니다. 시간을 측정하는 로직은 공통 관심 사항이다. 시간측정 핵심로직의 코드가 겹쳐서 유지보수가 힘들다. 시간을 측정하는 로직을 공통 로직으로 만들기 어렵다. 해결 1. By AOP 핵심 개념 : 공통 관심사항 (Cross-cutting concern) vs 핵심 관심사항(Core concern) 분리 시간 측정 로직을 한 곳으로 모으고 -> 필요할 때 가져다 쓰도록 AOP는 특수한 목적이기 때문에 @Component로 빈등록해주는것보단 Config에 직접 빈등록을 명시해 주는것이 좋음 메..