이유 : 다음이 일반적입니다.
1. 메모리에로드 된 데이터의 양은 데이터베이스에서 한 번에 너무 많은 데이터를 가져 오는 것과 같이 너무 큽니다.
2. 컬렉션 클래스의 개체에 대한 언급이 있으며, 사용 후에는 지우지 않으므로 JVM을 재활용 할 수 없습니다.
3. 코드에 데드 루프가있어 너무 많은 반복을 생성하는 루프가 있습니다.
4. 사용 된 타사 소프트웨어의 버그;
5. 시작 매개 변수의 메모리 값이 너무 작아집니다.
일반적인 오류 프롬프트 :
1.TOMCAT : java.lang.outofMemoryError : Permgen Space
2.TOMCAT : java.lang.outofMemoryError : Java 힙 공간
3. Weblogic : servletexception의 근본 원인 Java.lang.outofMemoryError
4.Resin : java.lang.outofMemoryError
5. java:java.lang.outofMemoryError
해결하다:
1. 응용 프로그램 서버가 제출 한 오류에 대한 솔루션 : 시작 매개 변수의 메모리 값을 충분히 커지게 설정하십시오.
2. Java 코드로 인한 오류에 대한 솔루션 : 다음 사항에 중점을 둡니다.
1) 코드에 데드 루프가 있는지 또는 재귀 호출이 있는지 확인하십시오.
2) 새로운 객체 엔티티를 반복적으로 생성하는 큰 루프가 있는지 확인하십시오.
3) 데이터베이스 쿼리에 모든 데이터를 얻은 쿼리가 있는지 확인하십시오. 일반적으로, 한 번에 100,000 개의 레코드를 메모리에 가져 오면 메모리 오버 플로우가 발생할 수 있습니다. 이 문제는 상당히 숨겨져 있습니다. 온라인으로 가기 전에 데이터베이스에 데이터가 적었고 문제가 발생하기가 쉽지 않았습니다. 온라인으로 이동 한 후 데이터베이스에 더 많은 데이터가 있었고 단일 쿼리로 인해 메모리 오버플로가 발생할 수 있습니다. 따라서 Pagination을 사용하여 데이터베이스 쿼리를 쿼리하십시오.
4) 사용 후 목록, 맵과 같은 수집 객체가 지워지지 않았는지 확인하십시오. 목록 및지도와 같은 수집 객체는 항상 객체에 대한 참조를 가지므로 이러한 객체를 GC에서 재활용 할 수 없습니다.
사례:
1. 데이터 쿼리 데이터를 최대 절전 할 때 한 번에 너무 많은 데이터를 쿼리합니다. 나중에이 부분의 코드가 조정되며 지정된 양의 데이터 만 한 번에 검색하여 문제를 성공적으로 해결합니다. 2. 스트레스 테스트를 수행 할 때 OutofMemoryError가 나타나고 세션의 자원이 공개되지 않은 것으로 나타났습니다. 세션의 Invalidate () 메소드를 통해 세션의 리소스를 해제하는 것이 가장 좋습니다.
3. 프로그램에 데드 루프가 나타납니다.
4. Tomcat이 배치되어 실행될 때 OutofMemoryError가 나타나고이 문제를 해결하기 위해 메모리 매개 변수 값이 증가합니다.
Tomcat의 Java.lang.outofMemoryError : Java 힙 스페이스 예외 처리
1. 힙 크기 JVM 힙의 설정은 JVM이 Java 프로그램 작동 중에 제공 할 수있는 메모리 공간의 설정을 나타냅니다. JVM이 시작되면 힙 크기의 값을 자동으로 설정합니다. 초기 공간 (즉, -xms)은 물리적 메모리의 1/64이고 최대 공간 (-xmx)은 물리적 메모리의 1/4입니다. -XMN -XMS -XMX 및 JVM에서 제공하는 기타 옵션을 사용하여 설정할 수 있습니다. 힙 크기의 크기는 젊은 세대와 임기 시온의 합입니다. 팁 :이 예외 메시지는 시간의 98%가 GC에 사용되고 사용 가능한 힙 크기가 2% 미만인 경우에 발생합니다. 팁 : 최대 힙 크기는 사용 가능한 물리적 메모리의 80%를 초과해서는 안됩니다. 일반적으로 -xms 및 -xmx 옵션을 동일하게 설정하고 -xmn은 -xmx 값의 1/4입니다.
2. 솔루션 : 힙 크기를 수동으로 설정하고 Tomcat_home/bin/catalina.sh catalina_base : $ catalina_base ": java_opts =" -xsms800m -xmx800m -xx : maxnewsize = 256m "에 다음 줄을"echo "에 추가하십시오.
java.lang.outofMemoryError : Tomcat의 Permgen Space Exception 처리
1. Permgen Space Permgen 공간의 전체 이름은 영구 생성 공간이며, 이는 메모리의 영구 저장 영역을 나타냅니다. 이 메모리는 주로 JVM에 의해 저장됩니다. 클래스는로드되면 Permgen 공간에 배치됩니다. 클래스 인스턴스 (인스턴스)가 저장되는 힙 영역과 다릅니다. GC (Garbage Collection)는 주 프로그램 런타임 중에 Permgen 공간을 정리하지 않습니다. 따라서 애플리케이션에 클래스가 많은 경우 Permgen 공간 오류가 발생할 가능성이 높습니다. 이 오류는 웹 서버가 JSP를 사전에 컴파일 할 때 일반적입니다. 웹 앱에서 많은 타사 항아리를 사용하는 경우 크기가 JVM (4m)의 기본 크기를 초과하면이 오류 메시지가 생성됩니다.
솔루션 : MaxPermsize 크기를 수동으로 설정하고 tomcat_home/bin/catalina.sh catalina_base : $ catalina_base : $ catalina_base ": java_opts =" -서버 -xx : permsize = 64m -xx : maxpermsize = 128m 권장 사항 : the tomcat/shared/shared/lib의 동일한 주제 파일을 이동합니다. JAR 문서의 반복 메모리 사용을 줄이기위한 목적을 달성합니다.
java.lang.outofMemoryError 예외 처리
오류 프롬프트 : "ervletexception의 근본 원인 java.lang.outofMemoryError"
솔루션 : BEA/Weblogic/Common : Sun If "%production_mode%"== "true"goto "goto sun_prod_mode set java_vm = -클라이언트 세트 mem_args = -xms256m -xmx512m -xx : maxpermsize = 256m set java_op java_op java_option java_option java_opt : got tone -note -none -vertiftion : xmx512m -xx : xmx512m -xmx512m -java_options에서 매개 변수를 조정합니다. : sun_prod_mode set java_vm = -server set mem_args = -xms256m -xmx512m -xx : maxpermsize = 256m 계속
java.lang.outofMemoryError Eclipse가 JBoss : Permgen Space Exception Handling을 실행할 때
Eclipse에서 Jboss를 실행할 때 너무 오래 걸리면 때때로 java.lang.outofMemoryError : Permgen Space Error. 다음은 귀하를위한 솔루션입니다.
1) 디버그 아이콘 옆에있는 작은 화살표를 클릭하십시오.
2) "디버그 구성 ..."메뉴 항목을 클릭하십시오.
3) 왼쪽의 "일반 서버"트리 아래에서 LocalHost에서 "Jboss v4.2"를 선택하십시오.
4) 오른쪽의 "인수"탭을 클릭하고 "VM 인수"에 추가하십시오.
-dprogram.name = run.bat -djava.endorsed.dirs = "d :/jboss405/bin /../ lib/승인"-xms128m -xmx512m -xx : permsize = 64m -xx : maxpermsize = 256m
5) 명령 줄 모드에서 JBoss를 실행하거나 "run.bat"을 직접 클릭하면 Bin/run.conf 파일에서 JVM 옵션을 수정해야하고 Java_opts = "-xms128m -xmx512m ..."문단을 찾은 다음 "-xx : permsize = 64m -xx = 256m"을 추가하십시오. 저장 괜찮습니다.
6) 참고 : 숫자 128, 512, 64 및 256은 컴퓨터 구성에 따라 조정 한 다음 "적용"을 클릭 할 수 있습니다.
java.lang.outofMemoryError 예외 처리 수지에서
이유 : 이 오류는 JVM 물리적 메모리가 너무 작기 때문에 발생합니다. 기본 Java Virtual Machine의 최대 메모리는 64 메가 바이트에 불과하며 개발 및 디버깅 중에는 아무런 문제가 없지만 응용 프로그램이 매우 작고 액세스 할 수없는 경우 실제 애플리케이션 환경의 요구를 충족하는 것과는 거리가 멀습니다. 그렇지 않으면 프로그램이 일정 시간 동안 실행 된 후 패키지 java.lang.outofMemoryError에서 오류가 발생할 수 있습니다. 따라서 저수지가 이용할 수있는 가상 머신 메모리의 크기를 늘려야합니다.
솔루션 : /usr/local/resin/bin/httpd.sh에서 args 옵션을 수정하여 매개 변수 -xms (초기 메모리) 및 -xmx (최대 메모리 크기를 사용할 수있는 최대 메모리 크기)를 추가하여 JVM의 물리적 메모리 사용량을 제한 할 수 있습니다. 예를 들어 : Args = "-xms128m -xmx256m"을 설정 한 후 JVM의 초기 물리적 메모리는 128m이고 최대 물리적 메모리는 256m입니다. 이 두 값은 서버의 실제 상황에 따라 시스템 관리자가 설정해야합니다.
위는 Java.lang.outofMemoryError의 오류 처리 문제에 대한 완벽한 솔루션의 완전한 내용입니다. 모두가 wulin.com을 지원하기를 바랍니다