programming study/B-Java

JVM, Garvage collection, Memory leak, Out Of Memory

gu9gu 2023. 4. 14. 15:05

JVM

JVM(Java Virtual Machine)은 자바 어플리케이션을 실행하기 위한 가상 머신입니다. 

JVM은 자바 코드를 읽어서 실행하고, 메모리 관리, 스레드 관리, 가비지 컬렉션(Garbage Collection) 등의 작업을 수행합니다. 

 

GC

gc란?

Garvage collection은 자바의 메모리 관리 기법 중 하나로 Garvage Collector가 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 해제하는 프로세스를 말합니다.

 

gc 장점

java 단에서 Garvage Collector가 메모리 관리를 대신 해주기 때문에 개발자는 메모리 관리를 하지 않아도 돼서 개발하는데 도움이 됩니다.

 

gc 단점

단점으로는 메모리가 언제 해제되는지 정확하기 알 수 없기 때문에 제어하기 어렵고 GC가 동작하는 동안에 다른 동작을 멈추기 때문에 오버헤드가 발생되는 문제가 있습니다.(Stop-The-World)

 

 

Memory Leak

Memory Leak(메모리 누수)은 자바 애플리케이션에서 발생하는 메모리 부족 현상 중 하나입니다. 객체가 더 이상 사용되지 않아도 메모리에서 해제되지 않는 경우 발생합니다. 이러한 메모리 누수는 시스템 성능 저하 및 Out of Memory(OOM) 예외 발생으로 이어질 수 있습니다. 

 

Out Of Memory

Out Of Memory(OOM)은 자바 어플리케이션이 사용 가능한 메모리를 모두 사용하고, 더 이상 사용 가능한 메모리가 없을 때 발생하는 예외입니다.

 

 

메모리 누수(MemoryLeak) 문제나 Out of Memory가  발생한 경우 GC 최적화 적업을 통해 해결 할 수 있습니다.

GC 성능을 최적화 하기 위해서는 상세한 동작 원리부터 메모리 사용량, 시스템의 로그 파일 분석 등을 분석하여 적절한 GC 설정 값을 결정해야 하는데, 잘 못 설정하면 오히려 시스템 성능을 저하시킬 수 있기GC 튜닝은 신중히 진행해야 합니다.

 

Out Of Memory 발생 시 해결 방법

Out Of Memory 발생 시에는 Heap dump를 분석해서 원인 분석하고 적절한 방법으로 해결해야 합니다.

Out Of Memory는 여러 원인이 있지만 메모리 누수가 쌓여서  발생할 수 있기 때문에 Heap 모니터링을 주기적으로 해서 OOM이 발생하지 않도록 해야 합니다.

 

JVM 힙 크기 조절 : 자바 애플리케이션의 힙 크기를 충분하게 설정하여 메모리 부족 상황을 방지
GC 튜닝 : Garbage Collection(GC) 튜닝을 통해 불필요한 객체를 적극적으로 제거하여 메모리를 최적화
메모리 누수 제거 : 프로그램에서 발생하는 메모리 누수를 찾아서 제거하여 메모리를 최적화
스레드 관리 : 스레드를 적절히 관리하여 메모리 사용을 최적화
클라우드 환경 사용 : 클라우드 서비스를 사용하여 필요에 따라 서버 리소스를 동적으로 조정하여 메모리 부족 상황을 방지