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...

http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
http://java.sun.com/docs/hotspot/gc1.4.2/faq.html

-l


-----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:

<Repository>
     <FileSystem  
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
         <param name="path" value="${rep.home}/repository"/>
     </FileSystem>
     <Security appName="Jackrabbit">
         <AccessManager  
class="org.apache.jackrabbit.core.security.SimpleAccessManager"/>
         <LoginModule  
class="org.apache.jackrabbit.core.security.SimpleLoginModule">
            <!-- anonymous user name ('anonymous' is the default  
value) -->
            <param name="anonymousId" value="anonymous"/>
         </LoginModule>
     </Security>
     <Workspaces rootPath="${rep.home}/workspaces"  
defaultWorkspace="default" />
     <Workspace name="${wsp.name}">
         <FileSystem  
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
             <param name="path" value="${wsp.home}"/>
         </FileSystem>
         <PersistenceManager  
class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
         <SearchIndex  
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
             <param name="path" value="${wsp.home}/index"/>
             <param name="autoRepair" value="true"/>
             <param name="analyzer"  
value="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
             <param name="textFilterClasses"
                  
value="org.apache.jackrabbit.core.query.HTMLTextFilter,org.apache.jackra

bbit.core.query.XMLTextFilter"/>
         </SearchIndex>
     </Workspace>
     <Versioning rootPath="${rep.home}/versions">
         <FileSystem  
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
             <param name="path" value="${rep.home}/versions"/>
         </FileSystem>
         <PersistenceManager  
class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
     </Versioning>
</Repository>

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

String rootDirectory = (String) ConfigManager.getEnvironmentEntry 
("jackrabbit/directory");
String configFile = (String) ConfigManager.getEnvironmentEntry 
("jackrabbit/configfile");

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

Session session = repository.login();
session.logout();


-- 
Torgeir Veimo
torgeir@pobox.com




Mime
View raw message