1. 서론 가비지 컬렉션(GC)은 프로그램에서 사용하지 않는 메모리를 자동으로 회수하는 기능입니다. 메모리 관리를 단순화하고 메모리 누수를 방지하는 역할을 하는 GC는 프로그래머의 부담을 줄여주는 중요한 기능입니다. 이 글에서는 가비지 컬렉션의 원리와 종류, 장단점에 대해 알아보겠습니다. 2. 가비지 컬렉션의 원리 GC의 기본 원리는 프로그램에서 사용되지 않는 메모리를 식별하고, 해당 메모리를 해제하는 것입니다. 이를 위해 GC 알고리즘은 메모리 사용 패턴을 추적하고, 더 이상 사용되지 않는 객체를 찾아내어 메모리를 회수합니다. 대표적인 GC 알고리즘으로는 참조 카운팅(Reference Counting), 표시-정리(Mark and Sweep), 카피(Copying), 그리고 세대별 수집(Generati..
Java
JVM(Java Virtual Machine)은 Java 프로그램을 실행하기 위한 가상 머신으로, Java 코드를 플랫폼에 독립적으로 실행할 수 있게 해줍니다. 이 글에서는 JVM의 동작 원리와 구성 요소에 대해 자세하게 설명하겠습니다. JVM의 개요 JVM은 Java 코드를 바이트코드(Bytecode)로 컴파일한 후, 이 바이트코드를 해당 플랫폼의 기계어로 변환하여 실행합니다. 이 과정을 통해 Java 프로그램은 한 번 작성하면 여러 플랫폼에서 실행할 수 있는 이식성(Portability)을 갖게 됩니다. 2. JVM의 구성 요소 JVM은 크게 Class Loader, Runtime Data Area, Execution Engine 세 가지 주요 구성 요소로 이루어져 있습니다. 2.1. Class Lo..
자바(Java)는 프로그래밍 언어 중 하나로 객체 지향 프로그래밍(Object-Oriented Programming, OOP)을 지원합니다. 자바에서 메서드에 인수를 전달하는 방식에 대한 논쟁은 꽤 오래되었습니다. 이 블로그 글에서는 자바가 Call by Value인지 Call by Reference인지에 대해 자세히 살펴보겠습니다. Call by Value와 Call by Reference의 개념 먼저 이 두 용어의 개념을 이해해야 합니다. Call by Value: 메서드에 인수를 전달할 때 값(value)만 전달되고, 원래 변수의 주소가 전달되지 않습니다. 이 경우 메서드 내에서 인수의 값이 변경되더라도 원래 변수의 값은 변하지 않습니다. Call by Reference: 메서드에 인수를 전달할 때..
이 주제에 대해서 적는 이유는 스프링에서 mybatis에서 작업을 하다가 에러가 나게 되어 ClassNotFoundException와 NoClassDefFoundError에 대해 비교하려 한다. 겉으로보면 autowired에서의 injection 실패로 인한 에러인듯 보여서 한참 헤매기도 했다. 그리고 스크롤바를 우단으로 쭉 넘겨보니 파란색 동그라미에 쳐진것처럼 "NoClassDeffoundError"라는 메시지가 뜨게 되었다. 처음에는 클래스가 없어서 그런거인줄 알았지만 잘못알게되어 잠깐 정리를 할까 한다. ClassNotFoundException - 말 그대로 클래스가 존재하지 않아서 생기는 예외이다. NoClassDeffoundError - 해당 클래스는 존재하지만, 그 클래스 안에 존재하는 다른 ..
메인 서버 12345678910111213141516171819202122232425262728293031323334353637383940414243package chat; import java.io.IOException;import java.io.Writer;import java.net.InetAddress;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketException;import java.util.ArrayList;import java.util.List; public class ChatServer { private static ServerSocket se..