<p>Recently I ran into this error in my web application:</p>

<blockquote>
  <p>java.lang.OutOfMemoryError: PermGen space</p>
</blockquote>

<p>It's a typical Hibernate/JPA + IceFaces/JSF application running on Tomcat 6 and JDK 1.6.
Apparently this can occur after redeploying an application a few times.</p>

<p>What causes it and what can be done to avoid it?
How do I fix the problem?</p>

The solution was to add these flags to JVM command line when Tomcat is started:
```
```
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
```
```
You can do that by shutting down the tomcat service, then going into the Tomcat/bin directory and running tomcat6w.exe. Under the "Java" tab, add the arguments to the "Java Options" box. Click "OK" and then restart the service.
If you get an error
the specified service does not exist as an installed service
you should run:
```
```
tomcat6w //ES//servicename
```
```
where
servicename
is the name of the server as viewed in services.msc
Source: orx's comment on
Eric's Agile Answers
.