jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Larry Ogrodnek" <La...@theladders.com>
Subject RE: permgen error with jackrabbit 1.1
Date Wed, 18 Oct 2006 20:04:46 GMT
Depending on your application, you may just need to increase your
PermGen size.

PermGen space is for system-use only, used by the ClassLoader:

"The permanent generation is used to hold reflective of the VM itself
such as class objects and method objects. These reflective objects are
allocated directly into the permanent generation, and it is sized
independently from the other generations. Generally, sizing of this
generation can be ignored because the default size is adequate. However,
programs that load many classes may need a larger permanent generation."

They go on to say: "For instance, some implementations of JSPTM pages do
this. If necessary, the maximum permanent generation size can be
increased with MaxPermSize."

I've seen this happen when I redeploy tomcat many times without a
restart (we have a lot of JSP pages).

Try adding: 

-XX:PermSize=128m -XX:MaxPermSize=128m

To your startup script, JAVA_OPTS, or whatever...



-----Original Message-----
From: Torgeir Veimo [mailto:torgeir@pobox.com] 
Sent: Wednesday, October 18, 2006 8:56 AM
To: users@jackrabbit.apache.org
Subject: permgen error with jackrabbit 1.1

I'm getting out of permgen space with jackrabbit running under tomcat  
when the webapp has been reloaded enough times.

I've been trying to find the problem using jconsole, and it appears  
if I do a session.login(); and session.logout(), then a good number  
of classes will not be unloaded after the webapp has been reloaded.  
I'm using TransientRepository and the following repository.xml file:

         <param name="path" value="${rep.home}/repository"/>
     <Security appName="Jackrabbit">
            <!-- anonymous user name ('anonymous' is the default  
value) -->
            <param name="anonymousId" value="anonymous"/>
     <Workspaces rootPath="${rep.home}/workspaces"  
defaultWorkspace="default" />
     <Workspace name="${wsp.name}">
             <param name="path" value="${wsp.home}"/>
class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
             <param name="path" value="${wsp.home}/index"/>
             <param name="autoRepair" value="true"/>
             <param name="analyzer"  
             <param name="textFilterClasses"

     <Versioning rootPath="${rep.home}/versions">
             <param name="path" value="${rep.home}/versions"/>
class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />

The code that is running and using Jackrabbit is limited to this:

String rootDirectory = (String) ConfigManager.getEnvironmentEntry 
String configFile = (String) ConfigManager.getEnvironmentEntry 

URL url = event.getServletContext().getResource(configFile);
InputStream repositoryXml = event.getServletContext 
RepositoryConfig config = RepositoryConfig.create(repositoryXml,  
repository = new TransientRepository(config);

Session session = repository.login();

Torgeir Veimo

View raw message