티스토리 뷰
hs_err_pid 파일은 JVM이 어떤 이유에 의해 강제로 종료되면서 왜 종료되었는지 단서를 남긴 파일이다.
[13:50:05.414][INFO ]19108[org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.prepareWebApplicationContext:line290] - Root WebApplicationContext: initialization completed in 655 ms
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000093b00000, 4005#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 400556032 bytes for Failed to commit area from 0x0000000093b00000 to 0x00000000ab900000 of length 400556032.
56032, 0) failed; error='�� �۾��� �Ϸ��ϱ� ���� ����¡ ������ �ʹ� �۽��ϴ�' (DOS error/errno=1455)
# An error report file with more information is saved as:
# C:\project\workspace\demo\hs_err_pid19108.log
tomcat을 기동할때 위와 같은 메세지를 내면서 기동이 안된다. 위와 같은 경우는 딱 봐도 이유가 명확하기에 조치하기가 어렵지 않지만 그 외에 문제로 JVM이 종료되게 되면 찾기 어려울수도 있다. 이렇게 콘솔로도 에러가 나오고 맨 아래줄에 있는것처럼 hs_err_pid.log 파일로도 기록을 남겨준다.
hs_err_pid.log
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 400556032 bytes for Failed to commit area from 0x0000000093b00000 to 0x00000000ab900000 of length 400556032.
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (t:/workspace/open/src/hotspot/os/windows/os_windows.cpp:3269), pid=19108, tid=7396
#
# JRE version: OpenJDK Runtime Environment (11.0+28) (build 11+28)
# Java VM: OpenJDK 64-Bit Server VM (11+28, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
...
--------------- T H R E A D ---------------
...
--------------- P R O C E S S ---------------
...
--------------- S Y S T E M ---------------
...
이런 식으로 파일 맨 위에 원인과 해결책에 대해 기술이 되어 있다. 그 밑으로도 상당히 많은 내용이 들어있는 로그 파일이지만 정 모르겠을때 말고는 딱히 볼 필요는 없을것 같다.
이 hs_err_pid 파일의 위치는 기본적으로 프로젝트의 root 하위에 생성이 되도록 되어 있다. 물론 이 파일의 위치나 이름도 JVM option을 통해 다음과 같이 변경할 수 있다.
-XX:ErrorFile=C:/temp/hs_err_pid%p.log
이렇게 설정하고 기동하고 또 JVM이 죽는다면 C:/temp 하위에서 hs_err_pid 파일을 찾을 수 있다.
끝!
'Lang > Java' 카테고리의 다른 글
[Java] java.io.IOException: Stream Closed 오류 조치 (1) | 2022.01.20 |
---|---|
try-with-resources 사용하여 resource 관리 쉽게 하는 방법 (0) | 2022.01.12 |
An illegal reflective access operation has occurred 오류 조치 - 2 (0) | 2021.11.26 |
JAVA UnsupportedClassVersionError 오류 조치 (class file version 확인하기) (0) | 2021.11.24 |
Java Application Process ID (pid) 확인하기 (0) | 2021.11.18 |
댓글