본문 바로가기

CS/OOP

(7)
Java Class Loader 알아보기 Class Loader 알아보기 Class Loader란? Java Virtual Machine (JVM)에서 클래스 파일을 로드하는 역할을 담당하는 구성 요소이다. Class Loader 로딩 Class Loader는 클래스 파일을 찾아 JVM으로 로드하는 역할을 합니다. 클래스 로딩은 필요한 클래스 파일을 찾고 메모리로 읽어오는 과정입니다. 이 과정에서 클래스 파일의 유효성을 검사하고, 필요한 경우 해당 클래스 파일을 컴파일합니다. 부트스트랩 클래스 로더 - JAVA_HOME\lid에 있는 코어 자바 API 제동 (최상위 우선순위를 가짐) 확장(Extension) 클래스 로더: 부트스트랩 로더의 하위 클래스로, JVM의 확장 클래스들을 로드한다. JVM 실행 시점에 로드되며, JVM 내부의 ext 디..
JVM Multi Thread JVM Multi Thread Multi Thread Was(Web Application Server)에서는 많은 수의 동시 사용자를 처리하기 위해 수십 ~ 수백 개의 Thread를 사용한다. 두 개 이상의 Thread가 같은 자원을 이용할 때 필연적으로 Thread 간에 경합이 발생하고 경우에 따라서는 Dead Lock이 발생할 수도 있다. Thread 경합 때문에 다양한 문제가 발생할 수 있으며, 이런 문제를 분석하기 위해서는 Thread Dump를 이용하기도 한다. Thread 동기화 여러 Thread가 공유 자원을 사용할 때 정합성을 보장하려면 동기화 장치로 한 번에 하나의 Thread만 공유 자원에 접근할 수 있게 해야 한다. Java에서는 Monitor를 이용해 Thread를 동기화한다. Ja..
GC(garbage collection) 알아보기 GC 알아보기 GC(garbage collection)이란? Garbage Collection은 보통 메모리의 압박이 있을 때 수행하게 된다. 어떤 이유에서든지 메모리가 필요하면 수행된다는 의미다. GC는 새로운 Object의 할당을 위해 한정된 Heap 공간을 재활용하려는 목적으로 수행된다. Heap영역을 재활용하기 위해 Root Set에서 참조되지 않는 Object를 없애 가용한 공간을 만드는 작업이라고 할 수 있다. 재활용을 위해 수행된 메모리의 해지는 할당한 그 자리에서 이루어지기 때문에 Garbage가 빠져나간 자리는 듬성듬성 비어있다. 이 경우 메모리의 개별 Free Space의 크기보다 큰 Object에게 공간을 할당할 경우 재활용의 의미가 사라진다. GC 작동원리 객체를 생성할 때마다 스택..
JVM이란 무엇일가? JVM 알아보기 JVM이란? JVM의 역할은 개발자들이 작성한 Java 프로그램이나 Web 애플리케이션 Server(WAS) 등을 구별하지 않고 Java 프로그램의 범위에 들어가는 모든 것들을 실행시키는 기본 데몬이다. Java에서 프로그램을 실행한다는 것은 컴파일 과정을 통해 생성된 Class 파일을 Java Compiler가 자바 ByteCode로 변환 후 JVM으로 넘겨준다 JVM은 ByteCode를 해석(Interpret)하는 과정을 거쳐 메모리 등의 리소스를 할당하고 관리하며 정보를 처리하는 일련의 작업들을 포괄한다. ( Thread 관리 및 GC와 같은 메모리 정리 작업도 포함) JVM안 각각의 기능들 Class Loader : JVM내로 .class파일들을 Load 하여 Loading 된 클..
Java Array와 List 차이 알아보기 Array와 List Array란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라고 한다. 베열의 선언 타입[] 변수이름; int[] score; 타입 변수이름; int score[]; 배열은 선언한 다음에 배열을 생성해야한다. 배열을 선언만 하는것은 단지 생성된 배열을 다루기 위한 참조변수 공간을 만들 뿐이고, 배열을 생성해야지만 비로소 값을 저장할 수 있는 공간이 만들어진다. 타입[] 변수이름 = new 타입[길이] int[] score = new int[5]; // 배열을 생성하면서 배열의 길이를 적어 줘야한다. int score[] = new int[5]; 배열의 길이를 적워줘야 배열의 요소의 개수, 즉 값을 저장할 수 있는 공간의 개수가 할당되며, 배열에서는 인덱스를 사용하는데 ..
JDK 와 JRE 그리고 JVM 알아보기 JDK 와 JRE 그리고 JVM 알아보기 안에서부터 밖으로 나가보자 JVM(Java Vertual Machine)란? JVM을 직역한다면 자바를 실행하기 위한 가상 기계라고 할 수 있다. JVM은 자바 응용프로그램을 운영체제나 하드웨어가 아닌 JVM과 통신하고 JVM은 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 즉 Java로 작성된 프로그램은 운영체제에 독립적이다. 즉 한번 작성하면, 어디서나 실행된다.(Write once, run anywhere) JRE(Java Runtime Environment)란? JRE는 이름에서 알 수 있듯이 실행만을 위한 환경이다. 개발자가 애플리케이션과 서비스 간에 완벽한 데이터 연결을 구축할 수 있도록 지원하는 다수의 ..
OOP - SOLID 알아보기 SOLID 알아보기 개발과정에서 SOLID를 왜 지켜야 할까? SOLID 원칙을 지킨다면 개발과정에서 유지보수에 용이하며 확장에 쉽도록 프로그래밍할 수 있도록 도움을 주기 때문이다. SOLID S - Single Responsibility Principle 단일 책임의 원칙 O - Open Close Principle 개방 폐쇄의 원칙 L - Liskov Substitutuin Principle 리스코프 치환의 법칙 I - Interface Segregation Principle 인터페이스 분리 원칙 D - Dependency Inversion Principle 의존관계 역전 원칙 단일 책임의 원칙 (SRP) 하나의 클래스는 하나의 책임만을(기능만을) 가지고 있어야 한다는 프로그래밍 원칙이다. A Cla..