티스토리 뷰

1. JVM과 JAVA 프로그램 실행 과정을 설명해보세요

: JAVA 프로그램은 JVM 상에서 실행되므로 JVM과 JAVA 프로그램의 구조/실행 방식을 잘 이해하고 있어야 효율적인 프로그램 작성이 가능함

# JVM은 JAVA Virtual Machine 자바 가상 머신의 약자

- 자바 프로그램을 자바 API를 기반으로 실행하는 역할을 함

# JAVA 프로그램 실행 과정은

 1) 프로그램이 실행되면 JVM이 OS으로부터 해당 프로그램이 필요로 하는 메모리를 할당 받고,

 2) 자바 바이트 코드로 변환된 .class 파일을 class 로더를 통해 JVM에 로딩한다

 3) 로딩된 class 파일은 execution engine을 통해 해석되고, 실행된다

 4) 필요시 gargabe collection을 수행해서, 불필요하게 할당된 메모리를 해제한닫

 

2. Garbage Collection이 필요한 이유

- JAVA 프로그램은 (C와 같이 포인터로) 

메모리를 명시적으로 지정해서 해제하지 않기 때문에, Garbage Collection Mechanism을 통해, 경우에 따라 더 이상 필요없는 객체를 찾아 지우는 작업을 수행한다

 

* Garbage Collection 동작 방식

# JVM 메모리 영역

1) JVM은 운영체제로부터 할당받은 메모리 영역을 세 영역으로 분리한다 -> 메소드 영역, JVM 스택, 힙 영역

2) 이 중에서 힙 영역에 생성된 객체가 저장되며, 사용하지 않는 객체를 GC를 통해 삭제한다

 2-1) JVM 힙 영역은 다음과 같이 나뉜다

   - YOUNG, OLD, Permanet Generation

     - YOUNG generation : eden, S0, S1 (Survivor space) 

# Garbage Collecion 동작 방식 

 1) 새롭게 생성된 객체는 YOUNG의 eden 영역에 들어가고, eden 영역에 다 차면 minor GC가 발생

 2) GC가 실행되면, GC를 실행하는 스레드 외에 나머지 스레드는 멈춘다

 3) 불필요한 객체는 삭제되고 아직 필요한 객체는 S0으로 이동, S0에 있던 객체는 S1로 이동, S1이 다 차면 S1에 아직 필요한 객체는 OLD generation으로 이동

4) OLD generation은 크기가 크므로, 이 영역이 다 차는 경우는 자주 발생하지 않음

 이 영역을 삭제할 때는 major GC (혹은 full GC) 발생

5) minor GC는 자주 발생하지만, YOUNG 영역은 OLD 영역보다 적기 때문에, 프로그램 중지시간 (stop-the-world)은 짧아짐

6) YOUNG 영역을 다 비우므로, YOUNG 영역에는 연속된 여유 공간이 만들어짐

 

3. Overriding VS Overloading

- 오버라이딩 : 상위 클래스에 존재하는 메소드를 하위 클래스에 맞게 재정의 하는 것 (메소드 이름과 파라미터 동일)

- 오버로딩 : 두 메소드가 같은 이름을 가지고 있으나, 파라미터 수나 자료형이 다른 경우

 

4. interface와 abstract

# abstract: 추상 클래스는 추상 메소드를 1개 이상 가지고 있는 클래스다.

 - 기존 메소드 이외에 추상 메서드를 상속시켜서, 반드시 구현이 필요한 내용인 추상 메서드를 상속바든 클래스에서 구현시키는 것이 주목적.

- 추상 메소드를 1개 이상 가진 클래스는 객체 생성이 안되므로,

  추상 클래스를 상속받은 클래스의 객체 생성을 위해서는 추상 메서드를 구현해야 함 (추상 메서드 구현을 강제함)

# interface : 상수와 메소드의 집합

 - 정의된 메소드를 implements 받은 곳에서 모두 구현을 강제함

- JAVA는 단일 상속만을 지원하기 때문에, 추상 클래스를 상속받은 클래스는 다른 클래스를 상속받을 수 없음. 그러나 인터페이스는 인터페이스끼리 상속이 가능하므로, 인터페이스는 다중 상속이 가능하다

 

5. 디자인 패턴이 무엇인지, 그리고 싱글톤에 대해 설명하시오

- 디자인 패턴은 공통적인 소프트웨어 코드 작성 문제를 해결하는데 도움이 될 수 있는 코드 패턴을 의미함

- 싱글톤은 전체 프로그램에서 단 1개의 객체를 생성해서 공유할 수 있는 코드 패턴

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
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
글 보관함