localhost에는 백엔드 서버 응용 프로그램으로 실행되는 몇 가지 Java 응용 프로그램 (jar)이 있습니다. 이 프로그램들은 가상 박스 안에 있습니다 (RHEL 6.2).
항아리 중 하나가 5 일 동안 작동 한 후에 작동을 멈췄습니다. 예외가 발생하지 않았습니다 (catch 블록에서 catch 될 수있는 오류의 출력이 표시되지 않음). 이 문제의 원인을 알아 내기 위해 println's
을 입력하고 셸 스크립트를 사용하여 명령 행에서 >
연산자를 사용하여 텍스트 파일로 출력을 리디렉션했습니다.
약 4 ~ 5 일 후에, 우리는 우리가 항아리가 아직 실행 된 것을 볼 수있는 상황에 직면하지만, 텍스트 파일이나 응용 프로그램이 항목을 기록했는데되는 데이터베이스에 아무것도 출력되지 않았습니다.
아마도 가상 파일이 처리 할 수있는 텍스트 파일이 너무 커지면 기본적으로 알 수 있습니다.실행중인 Java 응용 프로그램에서 문제를 찾는 더 나은 방법은 무엇입니까?
Java에서 이러한 런타임 문제는 어떻게 발생합니까? C++에서 우리는 valgrind, Purify 등을 가지고 있지만,
1. Java에서 그런 도구가 있습니까?
2. 매우 큰 텍스트 파일 문제를 직면하지 않고 println을 출력하는 것을 어떻게 권장합니까? 아니면 더 좋은 방법이 있을까요?
로깅 출력하는 가장 좋은 방법은 응용 프로그램의 상태입니다 기능, 로그 파일을 롤오버 구성하는 쉬운 방법을 제공합니다. 'Log4J' 또는'SLF4J' 로깅 라이브러리도 참조하십시오. 로그 라이브러리는 로그 파일을 너무 크게 만들지 않도록 롤링을 지원합니다. 또한 응용 프로그램에서 파일 크기가 임계 값보다 커지면 롤링을 수행해야합니다. –
또한 'JProfiler'또는 'VisualVM'을 사용하여 응용 프로그램을 모니터링하여 응용 프로그램의 현재 메모리 및 기타 중요한 상태를 확인하십시오. 또한 응용 프로그램이 멈추는 위치를 파악하는 데 도움이 될 수 있습니다. –