Java9 메서드 호출 시작JVM 내부로 파고들어 메서드 호출이 어떻게 이루어지는지를 정리하고자 합니다. Amazon Corretto 기준으로 작성하였습니다.본문invokevirtualinvokevirtual은 가장 일반적인 메서드 호출 방식입니다. 이 방식은 바이트코드를 사용해서 특정 클래스의 객체(또는 하위 클래스)에서 인스턴스 메서드를 호출하는 것을 의미합니다. 이 방식을 또 가상 메서드 디스패치(virtual method dispatch)라고도 합니다. 이 방식은 컴파일 시점에는 호출할 메서드가 정해지지 않고 런타임 시점에 호출할 메서드가 결정됩니다. 아래와 같은 코드가 있다고 가정해 봅시다.abstract class Animal { abstract void eat();}class Dog extends Animal.. 2025. 1. 12. 함수형 프로그래밍 시작함수형 프로그래밍은 프로그래밍 패러다임 중 하나로 함수를 값처럼 다루는 프로그래밍 방식입니다. 함수형 프로그래밍은 다음과 같은 특징을 가진다. 요즘은 함수형 프로그래밍이 대세가 되어가고 있기에 꼭 알아두어야 할 필요가 있습니다.본문순수 함수순수 함수란 함수의 결과가 오직 인자에만 의존하는 함수를 말합니다. 즉, 함수가 외부의 상태에 의존하지 않는 함수를 말합니다. Java에서 순수 함수를 구현하는 방법은 다음과 같습니다.int add(int a, int b) { return a + b; // 외부 상태에 의존하지 않음} Kotlin에서 순수 함수를 구현하는 방법은 다음과 같습니다.fun add(a: Int, b: Int): Int { return a + b // 외부 상태에 의존하지 않음}.. 2024. 12. 31. 가비지 컬렉션 시작JVM에서 메모리 관리는 가비지 컬렉션을 통해 이루어집니다. 이 포스트에서는 가비지 컬렉션에 대해 알아보겠습니다.본문스택과 힙JVM에서 메모리는 스택(Stack)과 힙(Heap)을 포함합니다.스택은 로컬 변수, 메서드 호출, 리턴 값 등을 저장하는 공간입니다.힙은 객체를 저장하는 공간입니다.힙에 저장된 객체는 더 이상 사용되지 않을 때 메모리를 잘 관리하기 위해 가비지 컬렉션을 사용하여 메모리를 해제합니다.마크 앤 스위프(Mark and Sweep)마크 앤 스위프는 가비지 컬렉션의 가장 기본적인 알고리즘입니다.그중 가장 간단한 형태는 다음과 같습니다.모든 실행 중인 프로그램 스레드를 일시 정지합니다.live 객체를 찾기 위해 힙을 순회하며 live 객체를 Mark합니다.live 객체는 참조되고 있는 .. 2024. 12. 19. 성능 튜닝의 중요성 시작성능 튜닝의 중요성에 대해 정리하고자 합니다.본문몇 가지 성능 용어 정리지연 시간(Latency): 요청을 보낸 후 응답을 받을 때까지 걸리는 시간처리량(Throughput): 단위 시간당 처리할 수 있는 요청의 수활용도(Utilization): 시스템의 자원을 얼마나 사용하고 있는지를 나타내는 지표효율성(Efficiency): 시스템이 자원을 얼마나 효율적으로 사용하고 있는지를 나타내는 지표용량(Capacity): 시스템이 처리할 수 있는 요청의 수확장성(Scalability): 시스템이 요청이 증가할 때 얼마나 많은 자원을 추가로 사용할 수 있는지성능 저하(Degradation): 시스템이 요청을 처리하는 데 걸리는 시간이 증가하는 현상성능 튜닝에서의 시간시간의 정밀도: 최소 시간의 단위시간의 정.. 2024. 12. 15. 이전 1 2 3 다음