CS - JAVA

안정후·2024년 2월 29일
0

CS 스터디

목록 보기
5/8
post-custom-banner

< Java 어플리케이션 실행 과정 >

-> 컴파일러가 자바 소스를 바이트코드로 변환한다. Class loader 가 바이트 코드를 런타임 데이터 영역에 로드시킨다. 로딩된 바이트 코드가 실행엔진에 의해서 실행되게 된다.

< Java 메모리 구조 >

  • PC Register : 현재 수행중인 명령어를 가지고 있다.
  • Stack Area : 함수에 대한 정보를 가지고 있다.
  • Native Method Stack : java 외에 다른 언어들이 들어가 있다.
  • Heap Area : 사용자가 사용하면서 생긴 데이터가 동적 할당된다.
  • Method Area : 각 클래스별로 전역변수, 정적변수, 메소드 정보들이 저장된다.

-> 우선 스레드마다 PC Register, JVM Stack, Native Method 가 있고, 스레드 공통으로 Heap Area, Method Area 가 있다.

< 가비지 컬렉션 >

-> JVM 에서 메모리를 관리해주는 모듈이다. Heap 메모리를 재활용하기 위해서 더 이상 참조되지 않는 객체들을 메모리에서 제거하는 모듈이다.
-> 개발자가 메모리를 직접 정리하지 않아도 되어 개발 성능이 향상되는 장점
-> Mark and Sweep 과정에서 참조되지 않는 객체를 찾는 과정이 있는데, 이때 스레드가 잠깐 중단되어서 성능이 떨어진다는 단점

< 객체지향 프로그래밍 >

-> 현실 세계의 사물같은 객체를 만들고, 객체에서 필요한 특징을 뽑아 프로그래밍 수행
-> 추상성, 상속성, 캡슐화, 다형성

< 추상클래스 vs 인터페이스 >

-> 추상클래스는 abstract 지시자로 정의되어서 추상메소드가 하나 이상 포함되는 클래스이다. 인터페이스는 interface 지시자로 정의되어서 모든 클래스가 추상메소드로 정의된다.
-> 추상 클래스는 기능을 재활용하고 확장시키는 목적이 있고, 인터페이스는 함수의 구현을 강제해서 구현한 객체들이 같은 동작을 하는 것을 보장하는 것에 그 목적이 있다.

profile
매일 한 단계 더 발전해나가는 개발자입니다.
post-custom-banner

0개의 댓글