org.eclipse.jetty.util.preventers

## Class GCThreadLeakPreventer

- java.lang.Object
- - org.eclipse.jetty.util.component.AbstractLifeCycle
  - - org.eclipse.jetty.util.preventers.AbstractLeakPreventer
    - - org.eclipse.jetty.util.preventers.GCThreadLeakPreventer

All Implemented Interfaces:
  LifeCycle

    public class GCThreadLeakPreventer
    extends AbstractLeakPreventer

GCThreadLeakPreventer Prevents a call to sun.misc.GC.requestLatency pinning a webapp classloader by calling it with a non-webapp classloader. The problem appears to be that when this method is called, a daemon thread is created which takes the context classloader. A known caller of this method is the RMI impl. See http://stackoverflow.com/questions/6626680/does-java-garbage-collection-log-entry-full-gc-system-mean-some-class-called This preventer will start the thread with the longest possible interval, although subsequent calls can vary that. Recommend to only use this class if you're doing RMI. Inspired by Tomcat JreMemoryLeakPrevention.

### Nested Class Summary

### Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

`AbstractLifeCycle.AbstractLifeCycleListener`

### Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle

`LifeCycle.Listener`

### Field Summary

### Fields inherited from class org.eclipse.jetty.util.preventers.AbstractLeakPreventer

`LOG`

### Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

`_listeners, FAILED, RUNNING, STARTED, STARTING, STOPPED, STOPPING`

### Constructor Summary

Constructors
Constructor and Description
`GCThreadLeakPreventer()`

### Method Summary

Methods
`void` `prevent(ClassLoader loader)`

### Methods inherited from class org.eclipse.jetty.util.preventers.AbstractLeakPreventer

`doStart`

### Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

`addLifeCycleListener, doStop, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### GCThreadLeakPreventer

    public GCThreadLeakPreventer()

### Method Detail

#### prevent

    public void prevent(ClassLoader loader)

Specified by:
  `prevent` in class `AbstractLeakPreventer`
See Also:
  `AbstractLeakPreventer.prevent(java.lang.ClassLoader)`