java(4)
-
자바 가비지 컬렉터(GC) 동작 원리
1. 가비지 컬렉션(GC)의 개념자바의 GC는 힙(Heap) 메모리에서 더 이상 참조되지 않는 객체를 찾아 자동으로 삭제하는 프로세스개발자가 직접 메모리를 해제할 필요가 없어 메모리 누수 방지에 결정적인 역할을 한다.2. 메모리 구조와 영역 분리 (Young vs Old)GC는 대부분의 객체는 금방 사라진다는 가설을 바탕으로 효율성을 위해 힙 영역을 나누어 관리한다.Young Generation: 객체가 처음 생성되는 곳. 청소가 빈번하며 속도가 빠름 (Minor GC)Eden / Survivor 0 / Survivor 1로 세분화됨Old Generation: Young 영역에서 오래 살아남은 객체들이 이동함. 덩치가 커서 청소 시간이 더 걸림 (Major GC)3. GC의 핵심 동작: Mark and ..
2024.08.29 -
StringJoiner, StringBuilder 정리
실무에서 관습적으로 StringBuilder를 사용해 구분자를 처리하는 로직을 보고 StringJoiner로 리팩터링을 진행하며 관련 내용을 정리한다. StringBuilderStringBuilder는 문자열을 연결할 때 사용하며구분자를 추가 할 때 아래와 같이 사용한다.StringBuilder builder = new StringBuilder();builder.append("Hello");builder.append(",");builder.append("World");String result = builder.toString(); // "Hello,World" StringJoinerStringJoiner는 내부에서 StringBuilder를 사용해 문자열과 문자열을 구분자로 연결하는 작업을 하며구분자..
2024.05.18 -
InputStream, OutputStream 정리
스트림(Stream)스트림이란 데이터를 연속적으로 처리하는 개념이다. 데이터가 한번에 전체가 아닌, 일정한 크기 단위로 전달되거나 처리되는 것을 말하며실시간 데이터 처리, 자원을 절약하여 효율적인 데이터 처리에 유리하다.Java에서 사용하는 InputStream, OutputStream은 'java.io' 패키지에 속하며 파일, 네트워크 연결, 메모리 배열 등의 데이터 소스로부터 데이터를 읽거나 쓸 때 사용한다. InputStream바이트 단위로 데이터를 읽기 위한 추상 클래스이며 주요 메서드는 아래와 같다.int read() : 하나의 바이트를 읽고, 해당 바이트를 정수(0-255)로 반환한다. 더 이상 읽을 데이터가 없으면 -1을 반환한다.int read(byte[] b) : 바이트 배열 'b'에 데..
2024.05.18 -
OpenCV 어플리케이션 만들기
준비 운영체제 : Windows 10 개발환경 : Andriod Studio OpenCV를 사용해 간단한 어플리케이션을 제작합니다. (그레이스케일, HSV, Smoothing 필터 구현) 안드로이드에서 OpenCV를 사용하기 위해서는 준비과정이 필요합니다. 크게 NDK방법과 Java api 방법으로 나뉩니다. NDK방법은 C++를 사용하고 준비과정이 조금 더 복잡합니다. Java api를 사용했습니다. OpenCV Java api 세팅방법 Android Studio 2.2에서 OpenCV 3.1 세팅하기 OpenCV와 Android Studio 버전에 따라 다른 내용이 생길 수 있으니 주의 바랍니다. 1. 안드로이드 SDK 다운로드 OpenCV 다운로드 페이지에서 OpenCV for Android를 다운..
2019.08.29