본문 바로가기

Java/topic9

Java의 GC(가비지 컬렉션) stop-the-world: GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 작업을 멈춘다. GC는 ‘week generational hypothesis’ 의 2가지 전제조건에 따라 만들어짐 대부분의 객체는 금방 unreachable한 상태가 된다 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재한다. 전제조건에 따라 오라클의 Hotspot JVM은 2가지 물리공간을 나눠 이용한다. Young/old 영역으로 나누는 방식을 Generational GC라고 함 Yong generation 영역. 새롭게 생성된 객체들은 이 곳에서 저장됬다가 금방 메모리 해제가 됨. minor GC가 발생한다고 한다 Old generation 영역. young 영역에서 오래 살아남으면 Old영역에 복사되고, 더 큰 메모리.. 2022. 10. 30.
Java의 Call by value(Pass by value), Swap 구현 방식 4가지 C++에서의 swap() 유틸리티 함수는 주소값을 교환하는 call by reference 방식으로서 동작한다. tmp 변수를 중간 매개로 주소값(값의 위치)을 서로 교환한다. void swap(int &a, int &b) { int temp = a; a = b; b = temp; } Java에서 primitive type, reference type에 해당하는 값을 저장하는 방식에 차이가 있다. JVM 메모리에서 primitive type은 stack 영역에 저장된다 reference type은 그 객체인 값이 heap 영역에 저장되고, stack 영역에 있는 변수가 객체의 주소값을 가지고 있다. 만약 swap 메서드에서 reference 변수를 파라미터로 넘기게 되면 해당 객체를 가리키는 새로운 변수.. 2022. 10. 9.
자바에서 컬렉션 정렬 시에 사용하는 인터페이스 2가지 - Comparable vs Comparator 자바에서 컬렉션 정렬 시에 필요한 인터페이스로는 Comparable, Comparator가 있다. java.lang.Comparable 인터페이스 - 이 인터페이스를 구현하는 객체 스스로에게 부여하는 한가지 기본 정렬 규칙을 설정한다 Comparable을 구현하고 있는 클래스들은 같은 타입의 인스턴스끼리 서로 비교할 수 있는 클래스이다. (wrapper 클래스, String, Date, File…). 기본 정렬 기준을 구현하는 데에 사용한다. 인터페이스 내의 int compareTo(T o) 메서드는 객체 자기 자신(this)와 매개변수 객체 o를 비교한다 두 객체가 같으면 0, 비교하는 값보다 작으면 음수, 크면 양수를 반환한다 기본적으로 오름차순으로 정렬되는데, 내림차순 or 다른 기준에 따라 정렬하.. 2022. 10. 9.
public static void main(String[] args) 의 의미 String[] args: String 객체로 정의된 args 라는 이름의 배열로 파라미터를 받겠습니다. 라는 의미 public class Main { public static void main (String args[]) { ... } } // String[] args, String args[], String... args 셋 다 사용 가능함 자바파일을 컴파일 한 뒤 실행할 때의 과정 1. javac Main.java 2. java Main : Main.class 를 실행하면서 파라미터를 전달하면 문자열 배열로 받음 엔트리포인트로서의 main() 런타임 라이브러리가 프로그램을 초기화하고 진입하는 진입점. CPU의 제어가 OS에서 프로그램으로 넘어가는 부분이다. main() - C나 Java를 비롯한 프.. 2022. 4. 26.