본문 바로가기

우아한 코딩34

특정 환경에서 발생하는 메모리 할당 실패 문제 많은 메모리를 점유하는 프로세스가 직접 외부 프로세서를 실행할 경우 메모리 할당 실패 문제가 발생하기도 하는데 아래와 같은 예외(EXCECTION) 메세지가 표시됩니다. "java.lang.OutOfMemoryError: Java heap space" 웹 애플리케이션 서버인 톰캣은 많은 양의 힙(Heap) 메모리를 할당하여 사용자 요청을 처리합니다. 하지만 메모리 할당 문제가 해결되지 않는 JDK 버전을 사용한다면, 일시적으로 요청되는 메모리가 시스템 수용능력을 넘어가 메모리 문제가 발생 하기도 합니다. 이번 글에서는 메모리할당에 실패하는 원인과 그 해결 방안에 대해 알아보겠습니다. 메모리 할당 실패 발생 요인 메모리 할당 실패 문제는 다양한 상황에서 발생할 수 있는데, 몇가지 예를 들면 첫 번째로, 메.. 2024. 2. 16.
자바에서 외부 프로세서가 전달하는 스트림 처리 문제 이번 글에서는 자바에서 외부 프로세서가 전달하는 스트림을 처리하는 도중 발생할 수 있는 다양한 문제와 해당 문제의 원인 및 해결 방안에 대해 알아보겠습니다. 1. 스트림 레코드의 크기가 너무 큰 경우 스트림 레코드의 크기는 외부 프로세서가 생성하는 데이터의 단위이며, 한 번에 전송되는 데이터의 크기를 의미하며, 이 크기가 클수록 메모리 사용량이 증가하고 데이터 처리에 필요한 리소스가 더 많이 요구됩니다. [발생하는 문제] - 메모리 부족 발생 대량의 데이터가 한 번에 로드되어 메모리가 부족할 수 있습니다. 특히 JVM의 힙 메모리 제한을 초과할 경우 OutOfMemoryError가 발생할 수 있습니다. - 네트워크 대역폭 부하 문제 스트림 레코드의 크기가 큰 경우에는 네트워크 대역폭 부하 문제가 발생할 .. 2024. 2. 14.
자바의 HashMap 심층분석 (2) 지난 글에서는 자바의 중요한 자료구조 중 하나로, 데이터를 빠르고 효율적으로 관리하고 검색할 수 있는 HashMap의 개념과 작동 방법에 대해 살펴보았습니다. 이번 글에서는 HashMap 사용 시 발생할 수 있는 문제들과 문제해결을 위한 몇 가지 해결방안을 알아보겠습니다. 1. 해시 충돌 문제 해시 충돌 문제는 지난 글에서도 언급된 바와 같이 해시 함수를 통해 생성된 해시 코드가 중복되는 현상을 말합니다. 즉, 서로 다른 두 개 이상의 키(KEY)가 동일한 해시코드를 가지는 경우를 의미합니다. 이런 상황이 발생하면, 서로 다른 키에 대한 값이 동일한 위치에 저장되어야 하는 문제가 발생합니다. 가장 대표적인 두 가지 해결 방법으로는 '개방주소법(Open Addressing)'과 '체이닝(Chaining)'.. 2024. 2. 13.
자바의 HashMap 심층분석 (1) HashMap은 자바에서 매우 유용한 자료구조 중 하나로, 키와 값(key-value)의 쌍을 저장하는 해시 테이블 기반의 자료구조입니다. 이 자료구조는 키(key)를 해시함수를 사용하여 해시 코드(hash code)로 변환하고, 이를 기반으로 배열에 저장된 버킷(bucket) 내에 해당 키와 연관된 값을 저장합니다. 이번 글에서는 HashMap의 개념과 작동 방법에 대해 살펴보겠습니다. HashMap 이란? HashMap은 Map 인터페이스를 구현한 클래스로서 key-value 쌍으로 이루어진 데이터 저장과 검색을 할 수 있게 해주는 자료구조입니다. Key와 Value 형태로 이루어져 있으며, 각 요소들을 키로 설정함으로써 중복되지 않는 고유한 값을 가질 수 있도록 합니다. 또한, 기존의 배열과는 다르.. 2024. 2. 10.