Category: Programming Lanuage

0

JAVA - Garbage Collection(가비지 컬렉션)

목차 Post not found: computer-science/java/gc-tunning JAVA - Garbage Collection(가비지 컬렉션) JAVA - JVM (자바 가상 머신) JAVA - Garbage Collection(가비지 컬렉션) 동적 할당 받은 메모리 중에서 사용하지 않는 메모리를 해제해 메모리 누수를 막는 메모리 관리 기법 memory leak 을 없앨 수 있다. GC Root가 될 수 있는 대상들 Stack 영역의 데이터 Static 데이터 JNI에 의해 생성된 객체들 Mark And Sweep 알고리즘 참조가 유효한 Object를 Reachable 참조가 유효하지 않은 Object를 Unreachable 이라고 부른다. Mark GC Root로부터 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾아서 마킹하는 과정 Mark 과정에서 Reachable 한 객체와 Unreachable 한 객체를 스캔한다 Sweep Unreachable한 객체를 Heap 에서 제거하는 과정 Compact Sweep 후 분산된 객체들을 모아 메모리 단편화 가 이뤄지는 것을 막아준다.

0

JAVA - JVM (자바 가상 머신)

목차 Post not found: computer-science/java/gc-tunning JAVA - Garbage Collection(가비지 컬렉션) JAVA - JVM (자바 가상 머신) JVM (자바 가상 머신) 자바 컴파일러에 의해 생성된 자바 바이트 코드(.class) 를 OS에 맞는 기계어로 변환해 실행할 수 있게 해준다.클래스 파일로 떨어질 수 있으면 어떤 언어라도 실행이 가능하다. (ex. kotlin) 자바 컴파일러에 의해 생성된 바이트 코드를 실행하는 표준이자 구현체다. JVM은 각 OS(운영체제) 에 맞게 설계가 돼 있다. 자바 바이트 코드만 있으면 JVM을 이용해 어느 운영체제에서나 실행이 가능하다. Stack 기반 가상 머신 JVM 구조 Class Loader, Memory, 실행 엔진(Execution Engine) 이 세가지로 구성 돼 있다.

0

컴파일 언어, 인터프리터 언어, 하이브리드 언어

컴파일 언어, 인터프리터 언어, 하이브리드 언어 객체 지향 3요소 객체 지향 설계 5원칙 SOLID 컴파일 언어, 인터프리터 언어, 하이브리드 언어컴파일 언어 고급 언어로 작성된 코드를 Compiler(컴파일러) 를 이용해 목적 코드 로 번역하는 과정을 거치는 언어좁은 의미에서는 소스 코드를 기계어 로 번역해주는 과정을 컴파일이라 한다. 프로그램을 한번에 번연한 후 실행한다. 한번에 모든 소스를 번역하기 때문에 메모리 사용량이 크다. 번역 속도가 느림 실행 속도는 빠름 번역과 실행이 따로 이뤄지기 때문에 실행 파일 (ex. .exe) 이 생성된다. C, C++ 언어가 대표적인 컴파일 언어다. 인터프리터 언어 컴파일 언어와는 다르게 소스코드를 원시코드(기계어)로 번역하는 과정을 거치지 않는 언어Interpreter(인터프리터) 를 이용해 한줄씩 읽어가면서 명령을 처리한다. 번역 속도가 빠름 실행 속도는 느림 번역과 실행이 한번에 이뤄지기 때문에 별도의 실행파일이 만들어지지 않는다. Python, Javascript 가 대표적인 인터프리터 언어다. 하이브리드 언어 컴파일 기법과 인터프리터 기법을 모두 사용하는 언어

0

객체 지향 설계 5원칙 SOLID

컴파일 언어, 인터프리터 언어, 하이브리드 언어 객체 지향 3요소 객체 지향 설계 5원칙 SOLID 객체 지향 설계 5원칙 SOLID1. SRP(Single Responsibility Principle) - 단일 책임 원칙한 클래스는 하나의 책임(역할)만 가져야 한다. 역할의 분리라고 생각하면 편하다!변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따르는 것 2. OCP(Open Close Principle) - 개방 폐쇄 원칙 확장 에는 열려 있으나 변경 에는 닫혀 있어야 한다. 기존 코드에 대한 수정은 직접적으로 하지 않고 기능을 확장, 추가 할 수 있도록 해야 한다. 인터페이스와 추상 클래스를 이용해 공통적인 작업에 대해 추상화 를 진행 상속과 구현을 이용해 기존 코드(상위 클래스)에 대한 수정 없이 기능을 확장시킬 수 있다. 이는 곧 다형성 을 이용한 기능 확장이다. OCP 문제점

0

객체 지향 3요소

컴파일 언어, 인터프리터 언어, 하이브리드 언어 객체 지향 3요소 객체 지향 설계 5원칙 SOLID 객체 지향 3요소1. 캡슐화 정보의 은닉 관련이 있는 변수와 함수를 묶는 작업 객체는 접근제어자를 이용해 외부에서 접근할 수 있는 정보 와 외부에서 접근할 수 없는 정보 를 분리해 관리할 수 있다. private : 클래스 내부에서만 접근 가능 public : 클래스 외부에서 접근 가능 protected : 자기 클래스 혹은 상속 받은 클래스에서만 접근이 가능 2. 상속 자원의 상속 자식 클래스가 부모 클래스의 모든 자원 (Field, Method) 를 물려 받는 것을 의미한다. 하나의 부모클래스는 여러개의 자식 클래스를 가질 수 있지만 그 반대는 안된다. 개발자는 상속을 통해 불필요한 코드를 줄일 수 있고 공통 자원 관리를 집중시킬 수 있다. (유지 보수가 편리하다.) 3. 다형성 여러가지 형태를 가질 수 있게 하는 특성대표적으로 오버라이딩 과 오버로딩 이 있다.