메모리 오버플로의 몇 가지 원인과 해결책
메모리 오버플로란 애플리케이션 시스템에 재확보할 수 없는 메모리가 있거나 너무 많은 메모리를 사용하는 것을 의미하며, 결국 프로그램 실행에 가상 시스템이 제공할 수 있는 최대 메모리보다 더 많은 메모리를 사용하게 됩니다.
메모리에 로드된 데이터의 양이 너무 많습니다 (예: 데이터베이스에서 한 번에 너무 많은 데이터를 가져오는 경우). 컬렉션 클래스에 객체에 대한 참조가 있습니다. 사용 후 비워지지 않아 JVM 을 재활용할 수 없습니다. 코드에 죽은 루프 또는 루프가 너무 많은 중복 객체 엔티티를 생성합니다. 사용 중인 타사 소프트웨어의 버그 부트 매개 변수 메모리 값이 너무 작게 설정되어 있습니다.
데이터베이스 조회 중 모든 데이터를 한 번에 가져오는 조회가 있는지 확인합니다. 일반적으로 한 번에 10 만 개의 레코드를 메모리에 기록하면 메모리 오버플로가 발생할 수 있습니다. 이 문제는 비교적 은밀하다. 온라인상에 오르기 전에 데이터베이스에 데이터가 적고 문제가 생기기 쉽지 않다. 온라인상에 올라간 후 데이터베이스에 데이터가 많아지면 한 번의 조회로 메모리 유출이 발생할 수 있다. 따라서 데이터베이스 쿼리에 대해 가능한 한 페이징으로 질의합니다.
코드에 데드 루프 또는 재귀 호출이 있는지 확인합니다.