본문 바로가기

전체 글

(120)
[JAVA] JVM, JRE, JDK 차이 1. JVM JVM은 자바 가상머신 (Java Virtual Machine)의 약자이다. JVM은 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있고, 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있다. 하지만, 플랫폼에 의존적이라 리눅스 JVM과 윈도우즈 JVM은 다르다. 2. JRE JRE는 자바 실행환경 (Java Runtime Environment)의 약자이다. JRE는 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고있다. 3. JDK JDK는 자바 개발도구 (Java Development Kit)의 약자이다. JDK는 JRE + 개발을 위해 필요한 도구(javac, java)등 들을 포함한다. 자바 소스 코드를 작성하..
[APM] APM 스카우터 1. Scounter란? 현재 오픈소스로 공개되어있는 APM이다. 한국 개발자들이 개발한 것이라 문서를 이해하기 쉽고, 커뮤니티도 잘 되어있는 편이다. 2. Scouter의 구성 Agent: 데이터를 모아 Collector에 전달한다. Host Agent: OS의 CPU, Memory, Disk 등의 성능 정보 전송 Java Agent (Tomcat Agent): 실시간 서비스 성능 정보, Heap Memory, Thread 등 JVM 성능 정보 및 Tomat WAS 성능 수집 및 전송 MariaDB Agent Server(Collector): Agent에서 받은 지표들을 모아서 저장하고, 클라이언트에서 요청하면 수집한 데이터를 내려준다. 지표들은 UDP로 올수도 있고, TCP로 올 수도 있다. Clie..
[JAVA] Garbage Collection 1. 가비지 컬렉션이란? 가비지란 쉽게 말하면 유효하지 않은 메모리이다. C나 C++에서는 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야한다. 반면 자바는 JVM에 있는 가비지 컬렉터가 메모리 관리를 도와주고 있다. 따라서 개발자는 메모리 누수 문제는 고려하지 않고 개발에만 집중할 수 있다. 가비지 컬렉션 (Garbage Collection)은 GC라고 불리기도한다. 자바의 메모리 관리 방법중 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 중에서 필요없는 영역을 주기적으로 삭제하는 프로세스이다. * Heap 이란 ? [JAVA] 힙 메모리 사용율 1. 자바의 힙 공간이란? 자바 프로그램이 시작되면 JVM 즉 Java Virtual Machine이 운영 체제에서 일부 메모리를 가져온..
[JAVA] 쓰레드, 프로세스, 멀티 쓰레드 1. 프로세스와 스레드 프로그램 : 실행 가능한 파일 (HDD, SSD) 프로세스 : 실행중인 프로그램 (메모리), 자원과 쓰레드로 구성 쓰레드 : 프로세스 내에서 실제 작업을 수행, 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다. 싱글 쓰레드 프로세스 = 자원 + 쓰레드 멀티 쓰레드 프로세스 = 자원 + 쓰레드 + 쓰레드 + 쓰레드 멀티 프로세싱 = 멀티 태스킹 : 동시에 여러 프로세스를 실행시키는 것 멀티 쓰레딩 = 하나의 프로세스 내에 동시에 여러 쓰레드를 실행시키는 것, 같은 프로세스 내의 쓰레드들은 서로 자원을 공유한다. (효율적이라는 장점이 있지만, 동기화나 교착상태에 신경써야한다.) 멀티 스레드로 구현된 프로그램을 실행하면? - 하나의 프로세서는 한번에 스레드 1개밖에 실행시키지 못한다..
[JAVA] 컬렉션 프레임워크 1. 컬렉션 프레임워크란? 컬렉션: 여러 객체를 모아놓은 것을 의미한다. 프레임워크: 표준화, 정형화된 체계적인 프로그래밍 방식이다. 컬렉션 프레임워크: 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해둔 것이다. 일반 배열과 가장 큰 차이점은 정적 메모리 할당이 아닌 동적 메모리 할당 방식으로, 공간이 필요한만큼 추가할 수 있다는것이다. 2. 컬렉션 프레임워크의 핵심 인터페이스 List: 순서가 있는 데이터의 집합, 데이터의 중복을 허용한다. 구현 클래스: ArrayList, LinkedList, Stack, Vector 순서 O, 중복 O Set: 순서를 유지하..
[JAVA] 제어자, 다형성, 인터페이스, 내부 클래스와 익명 클래스 1. 제어자란? - 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다. - 접근 제어자: public, protected, default, private - 그 외: static, final, abstract, native 1.1 static - 클래스의, 공통적인 멤버 변수 : 모든 인스턴스에 공통적으로 사용되는 클래스변수가 된다. 클래스변수는 인스턴스를 생성하지 않고도 사용 가능하다. 클래스가 메모리에 로드될 때 생성된다. 메서드: 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다. static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다. 1.2 final - 마지막의, 변경될 수 없는 클래스, 메서드, 멤버변수, 지역변수에 사용 가능 1.3 abstr..
[JAVA] 상속 1. 상속의 정의와 장점 1.1 상속이란? - 두 클래스를 조상과 자손으로 관계를 맺어주는 것이다. - 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외) - 조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다. - 자바는 단일 상속만을 허용한다. class child extends Parent{} /* 허용하지 않음 */ class TVCR extends TV, VCR{ } 2. Object 클래스 - 모든 클래스의 최고 조상이다. - 조상이 없는 클래스도 자동적으로 Object 클래스를 상속받게된다. - 모든 클래스는 Object 클래스에 정의된 11개의 메서드를 상속받는다. toString(), equals(Object obj), hashCode..
[JAVA] 생성자 1. 생성자란? 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드이다. * 모든 클래스에는 반드시 하나 이상의 생성자가 있어야한다. 사용법 class Card { Card(){} // 매개변수가 없는 생성자 Card(String kind, int number){} // 매개변수가 있는 생성자 } 1.1 기본 생성자 매개변수가 없는 생성자 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다. 다른 생성자 호출은 생성자의 첫 문장에서만 가능하다. 2. 참조변수 this 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어있음. 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재.