9

아주 작은 사용자 지정으로 Glassfish 설치를 새로 사용하고 있습니다.glassfish의 Java Heap Space 오류

필자는 주제를 청취하고 데이터베이스에서 수신하는 객체를 업데이트하는 Message Driven Bean (ObjectUpdateMDB)을 보유하고 있습니다. 많은 개체가 업데이트되고 있습니다. 한동안 실행 한 후에는 예외가 발생합니다.

 
SEVERE: JTS5031: Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [rollback] operation. 
SEVERE: MDB00049: Message-driven bean [Persistence:ObjectUpdateMDB]: Exception in postinvoke : [javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [rollback] operation. vmcid: 0x0 minor code: 0 completed: No] 
SEVERE: javax.transaction.SystemException 
javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [rollback] operation. vmcid: 0x0 minor code: 0 completed: No 
    at com.sun.jts.jta.TransactionManagerImpl.rollback(TransactionManagerImpl.java:350) 
    at com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.rollback(J2EETransactionManagerImpl.java:1144) 
    at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.rollback(J2EETransactionManagerOpt.java:426) 
    at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3767) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3571) 
    at com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1226) 
    at com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1197) 
    at com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:79) 
    at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139) 
    at $Proxy98.afterDelivery(Unknown Source) 
    at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:324) 
    at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:76) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555) 

INFO: MDB00037: [Persistence:ObjectUpdateMDB]: Message-driven bean invocation exception: [java.lang.OutOfMemoryError: Java heap space] 
INFO: java.lang.OutOfMemoryError 
java.lang.OutOfMemoryError: Java heap space 

힙 공간 문제인 것처럼 보입니다. 힙 공간을 조정하려면 무엇이 필요합니까? App Server 자체 또는 브로커? 어떻게해야합니까?

답변

8

Glassfish 설치에 더 많은 RAM을 할당해야합니다.

http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html

http://docs.sun.com/app/docs/doc/820-4495/gepzd?a=view 참조하십시오.

+0

이 작업을 수행하는 VMArg가 있습니까? 어떻게하면 좋을까요? – systemoutprintln

+0

다음을 살펴보십시오. http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html – OscarRyz

+0

그리고 http://docs.sun.com/app/docs/doc/820-4495/gepzd? a =보기 – OscarRyz

1

내 블로그에 VM tuning에 대한 게시물이 있으며 독자에게 Java Tuning White Paper을 가리키고 있습니다.

어쨌든, 당신은 아마 기본 설정의 부부로 보일 것입니다 빠른 답변을 얻을 :

-Xms : 초기 힙 크기

-Xmx : 최대 힙 크기를

를 얻으려면 이것들에 대한 간단한 설명 : java -X.

./alex

0

이가 관련이 있는지 모르겠지만, CORBA 예외 결과 XA 트랜잭션을 사용할 때 우리가 이상한 예외를 얻었다. 그 이유는 MySQL 드라이버 였고 최신 MySQL JDBC 드라이버 (5.1.7)로 업그레이드 한 후 이러한 XA 문제는 사라졌습니다.

7

나는 글래스 피쉬 3.1 문제를 정렬하려면 다음 asadmin 명령을 사용하고 있습니다 :

asadmin create-jvm-options --target server-config -- '-XX\:+UnlockExperimentalVMOptions' 
asadmin create-jvm-options --target server-config -- '-XX\:+UseG1GC' 
asadmin delete-jvm-options --target server-config -- '-Xmx512m' 
asadmin create-jvm-options --target server-config -- '-Xmx1024m' 
asadmin delete-jvm-options --target server-config -- '-XX\:MaxPermSize=192m' 
asadmin create-jvm-options --target server-config -- '-XX\:MaxPermSize=256m' 

asadmin create-jvm-options --target default-config -- '-XX\:+UnlockExperimentalVMOptions' 
asadmin create-jvm-options --target default-config -- '-XX\:+UseG1GC' 
asadmin delete-jvm-options --target default-config -- '-Xmx512m' 
asadmin create-jvm-options --target default-config -- '-Xmx1024m' 
asadmin delete-jvm-options --target default-config -- '-XX\:MaxPermSize=192m' 
asadmin create-jvm-options --target default-config -- '-XX\:MaxPermSize=256m' 

그것은 마이클 마이어스 힌트의 변형이다. asadmin 명령을 사용하면 쉽게 변경할 수 있습니다.

나는 일반적인 G1 컬렉터보다 훨씬 좋은 새로운 G1 콜렉터로 전환했다. 이클립스에서도 도움이된다 .-

구문은 Windows의 TakeCommand 용이다. 쉘과 OS의 다른 조합을 사용하는 경우 다른 이스케이프 문자 (대부분의 유닉스 셸에서는 역 따옴표 대신 i.E. 해협 진드기)가 필요할 수 있습니다.

*-jvm-options 명령으로 설정을 엉망으로 만든 경우 domain.xml 파일로 해결할 수 있습니다.