"Java 힙 공간"및 "메모리 부족"을 가져올 때 Eclipse 메모리 설정
eclipse에서 flex / java 프로젝트를 시작하고 실행하려고 할 때 Eclipse, Tomcat 및 JRE를 사용하여 "메모리 부족 예외"및 "Java 힙 공간"이 계속 발생했습니다.
메모리 설정을 조정하려고 시도하는 동안 세 곳에서이를 조정했습니다.
Eclipse.ini
창> 환경 설정의 JRE 설정
Catalina.sh 또는 Catalina.bat
이 다른 장소에서 -xms와 -xmx를 설정하는 것의 차이점은 무엇이며 무엇을 의미합니까?
이러한 메모리 설정이 적절하게 설정되었는지 확인할 수있는 방법이 있습니까?
RAM이 2GB 인 컴퓨터에 대한 최적의 -xms 및 -xmx 설정은 무엇입니까?
다른 메모리 팁이 있습니까?
감사.
-xms는 시작 메모리 (VM 시작시), -xmx는 VM의 최대 메모리입니다.
- eclipse.ini : eclipse를 실행하는 VM의 메모리
- jre 설정 : 이클립스에서 실행되는 자바 프로그램의 메모리
- catalina.sh : Tomcat 서버의 메모리
먼저 "메모리 부족 예외"를 발생시키는 구성 요소의 문제를 좁히는 것이 좋습니다.
이것은 다음과 같을 수 있습니다.
- Eclipse 자체 (내가 의심하는)
- 귀하의 응용 프로그램 에서 톰캣
JVM을 매개 변수 -xms
및 -xmx
대표 힙의 "메모리 시작"과 "최대 메모리". "시작 메모리"는 잊어 버리십시오. 지금은 도움이되지 않으며 앱이이 양의 메모리를 빠르게 소비 할 것이라고 확신하는 경우에만이 매개 변수를 변경해야합니다.
프로덕션에서 변경할 수있는 유일한 매개 변수 -xmx
는 Catalina.sh 또는 Catalina.bat 파일 아래에 있다고 생각 합니다. 그러나 Tomcat의 구성된 디버그 환경을 사용하여 Eclipse에서 직접 웹 애플리케이션을 테스트하는 경우 "디버그 구성"> "Apache Tomcat"> "인수"> "VM 인수"로 이동하여 설정하면 -xmx
됩니다.
-xmx
2GB 에 대한 최적의 경우 이것은 많은 환경과 앱에서 취할 수있는 요청 수에 따라 다릅니다. 나는 500mb에서 1gb까지 값을 시도 할 것입니다. OS 가상 메모리 "영역"한계와 JVM 자체의 한계를 확인하십시오.
사례에서 2 개의 문제를 발견했습니다.
메모리가 중단되고 시작 파마 크기를 더 높은 값으로 설정해야합니다. 메모리를 더 빨리 사용하고 할당 할 수 있었던 것 같습니다. 우리의 경우. -XX : PermSize = 256m -XX : MaxPermSize = 256m
우리는 Clearcase를 사용하고 있으며 Eclipse에서 Rational Clearcase SCM (7.0.0.2)의 플러그인을 사용했습니다. 플러그인은 Eclipse가 충돌 한 이유였습니다. 그리고 현재 우리는 이유를 모르지만 다른 사람들에게 알면 좋을 수 있습니다. 그것을 비활성화하도록 강요되었습니다.
Eclipse의 Tomcat은 catalina.sh 또는 bat를 사용하지 않습니다. 관리 Tomcat의 메모리를 설정하려면 서버 실행 구성에서 VM 설정을 사용하십시오.
새 버전을 출시하려고하거나 "Mark Occurrences"및 "Link with editor"기능을 남용 할 때 내 FLashBuilder가 항상 충돌합니다.
이 단계에 따라 플래시 성능이 크게 향상되었습니다. http://www.redcodelabs.com/2012/03/eclipse-speed-up-flashbuilder/
특히 FlashBuilder.ini를 다음 구성으로 설정하여
-vm
C:/jdk1.6.0_25/bin
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
–launcher.defaultAction
openFile
–launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
256m
–launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.5
-Xmn128m
-Xms1024m
-Xmx1024m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:+UseParallelGC
내 하드웨어 구성은 인텔 i3 cpu, 4gb DDR3, Windows 7 64Bit입니다.
정당한 이유로 몇 가지 다른 메모리 설정이 있습니다.
이클립스 메모리 설정은 이클립스가 큰 자바 프로그램이기 때문입니다. 두 개의 프로젝트에서 엄청난 양의 파일을 열려면 Eclipse에 더 많은 램을 제공하고 싶을 것입니다. 이것은 "엔터프라이즈"시스템에서만 발생하는 문제입니다. 일반적으로 개인 프로젝트는 많은 파일 핸들이나 인터페이스를 사용하지 않습니다.
The JRE setting is how much ram to allow the java runtime when you run your project. This is probably the one you want when you are running some memory hogging application. I've run mathematical projects that needed a few gigs of ram and had to really tell the JRE it was okay, the JVM kept assuming my program was in some leaky runaway state, but I was doing it on purpose, and had to tell JVM specifically what it was allowed to use.
Then Catalina's memory setting is for the application server Tomcat. That server needs memory for each application and concurrent users. This blends with the JRE number because your project might be a web application and I'm not sure which one needs the memory.
Also have some problems with the memory in Eclipse, but the way it is for us, is not when the actual run, it is when Eclipse is doing a refresh (manually or auto), or if trying to build it, eclipse crash and are shutdown.
In the logs there are some info:
Heap
def new generation total 36352K, used 11534K [0x10040000, 0x127b0000, 0x14f00000)
eden space 32320K, 29% used [0x10040000, 0x10994c30, 0x11fd0000)
from space 4032K, 49% used [0x123c0000, 0x125aed80, 0x127b0000)
to space 4032K, 0% used [0x11fd0000, 0x11fd0000, 0x123c0000)
tenured generation total 483968K, used 125994K [0x14f00000, 0x327a0000, 0x50040000)
the space 483968K, 26% used [0x14f00000, 0x1ca0ab38, 0x1ca0ac00, 0x327a0000)
compacting perm gen total 58112K, used 57928K [0x50040000, 0x53900000, 0x60040000)
the space 58112K, 99% used [0x50040000, 0x538d2160, 0x538d2200, 0x53900000)
No shared spaces configured.
Even if I adjust the eclipse.ini to use these values it doesn't seems to be applied.
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
1024M
-framework
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m
Any that have seen this issue before?
Will add that the project that are used is very large.
I have these settings:
-vmargs
...
-Duser.name=...
-XX:PermSize=256m
-XX:MaxPermSize=256m
-Xmn128m
-Xms256m
-Xmx768m
Eclipse randomly crashed before I set the PermSize equal to MaxPermSize.
If you see an out of memory, consider if that is plausible: Do you really need that much memory? If not (i.e. when you don't have huge objects and if you don't need to create millions of objects for some reason), chances are that you have a memory leak.
In Java, this means that you're keeping a reference to an object somewhere even though you don't need it anymore. Common causes for this is forgetting to call close() on resources (files, DB connections, statements and result sets, etc.).
If you suspect a memory leak, use a profiler to find which object occupies all the available memory.
We hit a heap space issue with Ant while trying to build a very large Flex project which could not be solved by increasing the memory allocated to Ant or by adding the fork=true param. It ended up being a bug in Flex 3.4.0 sdk. I finally figured this out after polling the devs for their sdk version and reverting to 3.3.0.
For the curious.
I tracked the bug down to an Interface file that had an additional accessor pair added "get/set maskTrackSkin". The heap space error hit if any additional functions were added to the interface and to make things worse the interface was not in the project that was getting the heap space error. Hope this helps someone.
Adobe Flash Builder 4.6 Read Me.pdf recommendeds that you edit the eclipse.ini file for your Eclipse instance, so that it includes the following settings:
-vmargs -Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:PermSize=64m
'IT Share you' 카테고리의 다른 글
메모리 정렬 : alignof / alignas를 사용하는 방법? (0) | 2020.12.12 |
---|---|
python pandas 데이터 프레임, 값에 의한 전달 또는 참조에 의한 전달 (0) | 2020.12.12 |
Linux 터미널에서 내용을 고려하여 폴더의 마지막 수정 날짜를 어떻게 표시합니까? (0) | 2020.12.12 |
내 코드에서 Google Chrome 11의 폴더 업로드 기능을 어떻게 사용합니까? (0) | 2020.12.12 |
여러 줄 텍스트에 text-overflow : ellipsis를 사용할 수 있습니까? (0) | 2020.12.12 |