본문 바로가기

Java29

Garbage Collector Java에서는 메모리를 개발자가 명시적으로 해제하지 않고 Garbage Collector가 필요없는 객체를 찾아 지우는 작업을 해준다. GC란 이미 할당된 메모리에서 더 이상 사용하지 않는 메모리를 해제하는 행동이다. 여기서 사용되지 않는 메모리의 대상은 Heap과 Method Area에서 사용되지 않는 Object들을 의미한다. Mark 가비지 컬렉션의 개념은 자바에서 최초로 사용된 것이 아니다. LISP라는 언어에서 처음 도입된 개념이다. 하지만 자바가 GC개념을 더욱 대중화 시키는데 기여를 하였다. GC의 기본 개념 Heap영역의 오브젝트 중 stack에 도달 불가능한(Unreachable) 오브젝트들은 가비지 컬렉션의 대상이 된다. 여기 Unreachable이란 힙에 있는 데이터들중 스택에서 참조.. 2022. 5. 27.
JVM과 자바 컴파일 JVM(Java Virtual Machine) -프로그램을 실행하는 자바 플랫폼의 구성요소이다. -JAVA 바이트 코드를 실행시키기 위한 가상의 기계. -OS에 의존적이며 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있다. -자바 바이트 코드가 실행될 수 있는 런타임 환경을 제공하는 사양. *바이트코드? :자바 가상머신이 이해할 수 있는 언어로 변환된 자바 소스 코드. .java -> .class 파일로 컴파일시 .class 파일내부에 jvm이 읽을 수 있는 바이트코드가 있다. JVM 구성 JVM은 크게 4가지로 나눌 수 있다. Class Loader Execution Engine Execution Engine은 2가지 방법으로 작동한다. 1.인터프리터(Interpreter) :명령어를 하나 .. 2022. 5. 27.
logback 직접 추가해보기 그럼 이제 전에 만든 hello에 logback을 추가하여 보도록 하겠습니다. 전에 만든 hello.java를 inteliJ를 통하여 열어서 수정하겠습니다. package com.choi; import org.slf4j.Logger; import org.slf4j.LogerFactory; class hello { private static Logger logger = LoggerFactory.getLogger(hello.class); public static void main(String args[]) { logger.info("Hello"); } } slf4j를 추가하여 소스를 수정하였습니다. 이제 이 소스를 이전에 방식으로 javac를 통하여 컴파일 하겠습니다. javac가 slf4j와 관련된 모듈들.. 2021. 1. 5.
cmd로 자바 컴파일 하기(java 패키지 구조 이해) 자바 컴파일을 이해하기 위해 cmd로 간단한 자바를 컴파일하려고 한다. 자바의 경우 파일명과 클래스명이 같아야 하니 이점 유의하며 소스코드를 작성하길 바란다. 오른쪽과 같이 소스를 작성한후 javac를 이용하여 컴파일 해보자. 자이제 javac명령어를 통해 hello.java 가 hello.class로 컴파일 된 것을 볼 수 있다. java명령어를 통해 실행해보니 우리가 입력한 Hello가 출력된 것을 볼 수 있다. 이제 이 hello클래스를 패키지로 만들어 볼려고 한다. 패키지명은 보통 도메인의 역순으로 구성되니 위와 같은 규칙으로 해볼려고 한다. 주소명을 간단하게 choi.com으로 구성하여 진행하도록 하겠다. 자바의 패키지는 디렉토리로 구별되니 com디렉토리 안에 choi 디렉토리를 넣고 이전에 사.. 2021. 1. 5.