>  Q&A  >  본문

java - 今天开始用eclipse编写servlet程序,但是经常写着写着就变的很卡,最后强行关闭,又重启还是不行,为什么呢?

有时候会自己卡在那,有时候eclipse提示出现问题,要求我查看workspace.metadata.log文件,log文件提示的错误是:
!ENTRY org.eclipse.osgi 4 0 2016-11-05 15:17:10.371
!MESSAGE Error stopping the framework.
!STACK 0
java.lang.OutOfMemoryError: PermGen space


我在百度上查的java.lang.OutOfMemoryError解决方案是在tomcat配置里扩大内存,如图,红色部分是根据提示添加的:

还有的说在eclipse里修改Window/Perferences/General里的Startup and Shutdown,把打勾的都去掉。

我试了两种方法都不行,再次打开eclipse编程过一会还是会边卡,求大神指教,这是为什么啊?

迷茫迷茫2714일 전938

모든 응답(4)나는 대답할 것이다

  • 天蓬老师

    天蓬老师2017-04-18 10:21:04

    1 아래와 같이 ecplise 설치 경로에서 ecplise.ini를 찾아 텍스트 편집기를 선택하여 열고 상자에서 이러한 설정의 매개변수를 확인한 후 자신의 메모리에 맞게 설정하면 됩니다.


    두 번째로 ecplise에서 사용하고 있는 jdk의 가상 메모리를 가져갈 수도 있습니다
    window->preferences->Java->설치된 위치 찾기 eclispe JRE를 실행하고 오른쪽의 편집 버튼을 클릭한 후 편집 인터페이스의 "기본 VM 인수" 옵션에 다음 값을 입력합니다.
    -Xms64m -Xmx128m

    3. 실행 구성 수정

    코드를 마우스 오른쪽 버튼으로 클릭하고 "다음 계정으로 실행"-> "구성 실행"을 클릭한 후 인수 매개변수의 "VM 인수:"에 다음 값을 입력합니다.
    -Xms64m-Xmx128m

    마지막으로 이러한 매개변수 값은 그냥 입력할 수 있는 것이 아닙니다. 자신의 머신의 메모리를 기준으로 합리적인 값을 설정하는 것이 가장 좋습니다

    공식 설명은 다음과 같습니다
    힙 및 비힙 메모리
    공식 설명에 따르면 "Java Virtual Machine에는 힙이 있습니다. 힙은 런타임 데이터 영역, 모든 클래스 인스턴스 및 메모리입니다. 힙은 JVM이 시작될 때 생성됩니다. "JVM에서 힙 외부의 메모리를 비힙 메모리라고 합니다." JVM은 주로 힙과 비힙이라는 두 가지 유형의 메모리를 관리한다는 것을 알 수 있습니다. 간단히 말해서 힙은 Java 코드에 액세스할 수 있는 메모리이며 개발자를 위해 예약되어 있습니다. 비힙은 JVM 자체를 위해 예약된 메모리이므로 메서드 영역 및 JVM 내부 처리 또는 최적화(예: JIT 컴파일 코드)에 필요한 메모리입니다. 캐시), 모든 클래스 구조(예: 런타임 상수 풀, 필드 및 메서드 데이터), 메서드 및 생성자에 대한 코드는 모두 오프힙 메모리에 있습니다.
    힙 메모리 할당
    JVM이 할당하는 초기 메모리는 -Xms로 지정되며, 기본값은 물리적 메모리의 1/64입니다. JVM이 할당하는 최대 메모리는 -Xmx로 지정되며, 기본값은 실제 메모리의 1/4입니다. 기본적으로 사용 가능한 힙 메모리가 40% 미만인 경우 JVM은 최대 제한인 -Xmx까지 힙을 늘립니다. 사용 가능한 힙 메모리가 70%를 초과하는 경우 JVM은 최소 한도인 -Xmx까지 힙을 줄입니다. -Xms. 따라서 서버는 일반적으로 각 GC 후에 힙 크기를 조정하지 않도록 -Xms 및 -Xmx를 동일하게 설정합니다.
    비힙 메모리 할당
    JVM은 -XX:PermSize를 사용하여 비힙 메모리의 초기 값을 설정합니다. 기본값은 물리적 메모리의 1/64입니다. XX:MaxPermSize는 최대 비힙 메모리 크기를 설정합니다. , 기본값은 물리적 메모리의 1/64/4입니다.
    JVM 메모리 제한(최대값)
    일단 JVM 메모리는 실제 최대 물리적 메모리로 제한됩니다(말도 안되는 소리! ㅎㅎ). 물리적 메모리가 무한하다고 가정하면 JVM 메모리의 최대값은 많습니다. 운영 체제와 관련이 있습니다. 간단히 말하면, 32비트 프로세서의 제어 가능한 메모리 공간은 4GB이지만 특정 운영 체제에서는 일반적으로 2GB~3GB로 제한됩니다(일반적으로 Windows 시스템에서는 1.5G~2G, 1.5G). Linux 시스템에서는 G-2G). 2G-3G)이며 64비트 이상의 프로세서에는 제한이 없습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:21:04

    • 메모리 늘리기/SSD 교체

    • 컴퓨터 변경

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:21:04

    Tomcat의 JDK 구성에 이러한 구성을 추가해 보세요. 스크린샷은 서버>tomcat>JDK의 선택적 Java VM 인수에 있습니다.

    회신하다
    0
  • 阿神

    阿神2017-04-18 10:21:04

    쉬움, 아이디어로 전환(단, 구성이 더 좋음)

    회신하다
    0
  • 취소회신하다