Deep Learning/Natural Language Processing

Q. java.lang.OutOfMemoryError: java.lang.OutOfMemoryError: Java heap space 에러 발생 원인과 해결방법은?

makeitworth 2022. 3. 15. 10:43

환경

Windows 10 Pro

python 3.8.12

 

IDE - vscode

에러 발생 상황

konlpy 0.6.0 버전의 형태소분석기 Kkma로 명사 추출을 진행중.

동일한 코드로 테스트를 위해 10000개 행까지만 슬라이싱해서 진행할 경우는 코드가 잘 돌아가지만, 전체 텍스트를 동일한 코드 실행할 경우 outofmemory 에러 발생

 

# 3. 명사 추출
def extract_nouns(text, stopwords_path = False):
    kkma = Kkma()
    noun = kkma.nouns(text)
    result = []
   
    if stopwords_path:
        stopword_list = get_stopwords(stopwords_path)
        # Stopword 및 한글자 형태소 제거 

        for n in noun:
            if n not in stopword_list and 1 < len(n):
                result.append(n)
    else:
        for n in noun:
            if 1 < len(n):
                result.append(n)        

    return result
    
noun_contents = processed_contents.apply(extract_nouns)
noun_contents.head()

 

에러 메세지

java.lang.OutOfMemoryError: java.lang.OutOfMemoryError: Java heap space

 

해결

konlpy 깃허브 이슈 쓰레드를 보고 알게 되었는데, 꼬꼬마 형태소 분석기가 메모리 이슈가 자주 발생한다고 한다. 운영자 lucypark님의 코멘트를 보면 알 수 있겠지만, 해결하지 못하고 있는 이슈이며, 1) 다른 형태소 분석기를 쓰거나 2) 인위적으로 할당 메모리를 늘려서 해결하거나 하라고.

 

konlpy.jvm.init_jvm 의 메모리 할당 파라미터를 활용해 더 많은 메모리를 할당해준다.

(jvm을 시작시키는 메서드임으로, konlpy 불러와서 바로 실행할 것)

메모리 크기는 자기 하드웨어에 맞게

konlpy.jvm.init_jvm(jvmpath=None, max_heap_size=2048)

 

참고 : 

https://github.com/konlpy/konlpy/issues/93