Language/Java

Language/Java

Java 기본 - Annotation

어노테이션이란? 스프링을 쓸 때 많이 쓰는 어노테이션들이 있다. @PostMapping이라던가 @RequestBody라던가 어느샌가 당연하게 기능 위주로 생각하며 어노테이션을 쓰고 있었다. 그렇다면 어노테이션은 무엇이고 왜 쓰는걸까? 어노테이션이란 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 소스 코드에 대한 데이터를 제공하는 것이다. 메타데이터란? 데이터에 대한 데이터. 데이터의 상태를 표현하는 데이터이다. 어노테이션의 용도 컴파일러에게 문법 에러를 체크하도록 정보를 제공한다. 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다. 런타임 시 특정 기능을 실행하도록 정보를 제공한다. 어노테이션의 종류 내장 어노테이션 @Override 선언한 메서드가 ..

Language/Java

Java 기본 - Collection

Collection을 사용하는 이유 다수의 데이터를 다룰때는 자료구조를 사용하는 것이 효율적인데 표준화된 클래스를 사용하면 자료구조를 직접 구현하지 않고 사용할 수 있어 용이함. 배열과 다르게 객체 보관을 위한 공간을 미리 정하지 않아도 되므로 상황에 따라 객체의 수를 동적으로 정할 수 있어 공간적인 효율성이 높아진다. Collection의 종류 List List 인터페이스를 사용자가 @Override를 통해 직접 정의해 사용할 수도 있다. 대표적인 구현체로는 ArrayList가 있다. 이외에도 LinkedList 등의 구현체가 있다. Map 대표적인 구현체로는 HashMap이 있다. Key-Value의 구조로 이루어져 있으며 자료구조의 해시테이블과 같다. Key값은 중복불가한 값이며 순서를 보장하지 않..

Language/Java

Java 기본 - JVM이란 무엇일까?

JVM이란? JVM이란 단어적 의미로는 JAVA Virtual Machine - 자바 가상 머신이라는 의미이다. 가상머신(VM)이란 프로그램의 실행을 위해 물리적인 머신과 유사한 머신을 소프트웨어로 구현한 것이다. JVM이란 OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게하는 VM이다. 자바프로그램의 실행과정 어떤 OS에서 실행되든 자바 컴파일러: 자바 소스코드(.java)를 자바 바이트코드(.class)라는 공용어로 변환시킨 후 JVM: 자바 바이트코드(.class)를 로컬 OS가 인식할 수 있는 바이트코드로 해석해 OS에 지시하는 역할을 한다. 1. 프로그램이 실행된다. -> JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받는다. (JVM은 이 메모리를 용도에 따라 여러 ..

Language/Java

GC란 무엇일까? Garbage Collector?

Garbage Collector란 무엇일까? 런타임에 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능 GC의 영역 eden 처음 객체가 생성되는 공간 Survivor 0, 1 -> Minor GC eden영역이 가득 찼을 때 reachable(참조되고 있는) 값만 걸러서 저장되는 영역 Survivor (?)이 가득 차게 되면 비어있는 상대 Survivor (??)에 똑같이 reachable(참조되고 있는) 값만 걸러서 저장한다. 따라서 Survivor 0과 1 중 하나는 무조건 비어있는 형태를 띈다. 한번 걸러서 저장할 때마다 그 객체의 age는 올라가고 저장되지 못한 객체들(unreachable 객체들)은 삭제된다. Old Generation age값이 일정값을 넘긴 생존한..

레이튼
'Language/Java' 카테고리의 글 목록 (2 Page)