일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- springdoc
- 이분 탐색
- tarjan
- kruskal
- 알고리즘
- DP
- Java
- DFS
- disjoint set
- MST
- 위상정렬
- BindingAdapter
- 백트래킹
- BFS
- concurreny
- 구현
- 투 포인터
- 페르마 소정리
- 누적 합
- spring boot
- union-find
- kapt
- Linux
- 분리 집합
- 위상 정렬
- MySQL
- Meet in the middle
- miller-rabin
- 그래프
- SCC
- Today
- Total
목록Java (4)
기맹기 개발 블로그

1. JVM, JRE, JDK JVM (Java Virtual Machine) 스택 기반의 VM 명령어와 데이터가 모두 스택에 저장된다. 장점 : 스택에 저장된 값의 메모리 주소를 사용하지 않기 때문에 명령어 크기가 작다. 단점 상수 값에 비해 스택에서 값을 가져오는 작업이 느려서 성능이 떨어질 수 있다. 스택에 저장된 값이 메모리 상에 연속적으로 존재하지 않기 때문에 캐시 효율성이 떨어질 수 있다. 레지스터 기반 VM은? 레지스터에 저장된 값을 직접 사용하기 때문에 스택 기반 VM보다 빠르지만, 메모리 사용량이 증가한다. 바이트코드를 OS에 의존적인 머신코드로 변환하여 실행한다. JVM 자체는 바이트코드를 실행하는 표준이며, 특정 벤더에 의해서 구현된다. JVM Specification (Java SE..
JIT 메소드 인라인 OOP에서 캡슐화를 위해 private 필드를 게터/세터만을 이용해서 접근할 수 있도록 합니다. 이로 인해 메소드 호출 스택이 늘어나는 오버헤드가 발생하지 않을까라는 의문을 해결해보고자 합니다. Java JIT 컴파일러의 최적화 Java는 컴파일과 인터프리터 방식을 모두 사용합니다. *.java 코드는 javac에 의해 *.class의 바이트코드로 변환됩니다. JVM 내부에서는 바이트코드를 네이티브 코드로 변환하기 전에 JIT(Just-In-Time) 컴파일러는 런타임에 바이트코드를 최적화합니다. 이 때 최적화를 위해 메소드 인라이닝이 진행됩니다. 메소드 인라이닝 메소드 인라이닝 (inlining)이란 메소드를 호출을 본문으로 대체하는 것입니다. JIT 컴파일러는 자주 호출하는 메소..
Thread 클래스로부터 직접 생성 java.lang.Thread 클래스로부터 Runnable을 매개값으로 갖는 생성자를 호출하여 생성할 수 있다. Runnable은 작업 스레드가 실행할 수 있는 코드를 가진 객체이다. @FunctionalInterface public interface Runnable { public abstract void run(); } Runnable 구현 클래스를 생성하거나, 익명 구현 객체를 만들거나, (자바 8부터는) 람다식을 이용해 매개값으로 전달할 수 있다. 작업 스레드는 생성되는 시점에 실행되는 것이 아니라, start() 메소드를 호출해야 실행된다. Thread thread = new Thread(() -> { // 스레드 실행 코드 }); thread.star..
제네릭 Java 5부터 추가된 Generic을 사용하여 다음의 장점을 얻을 수 있다. 컴파일 시간에 강한 타입 체크가 가능하다. 불필요한 타입 캐스팅을 제거하여 성능을 향상시킨다. 제네릭 타입: class, interface public class 클래스명 { ... } public interface 인터페이스명 { ... } 타입을 파라미터로 가지는 클래스와 인터페이스를 제네릭 타입이라고 한다. 타입 파라미터는 변수명과 동일한 규칙으로 작성할 수는 있지만, T 처럼 대문자 한글자로 표현하는 것이 관례이다. 자바 7부터 연산자를 사용하면 컴파일러가 타입 파라미터를 자동 추론한다. List myList = new ArrayList(); // 타입 파라미터 명시 List myList = new ArrayLi..