Fixes #1923 - GCThreadLeakPreventer won't work with Java 9.
GCThreadLeakPreventer has been removed, since the issue it was trying to fix was solved in Java 9+. Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
This commit is contained in:
parent
a133e195d8
commit
96e068582b
|
@ -1,59 +0,0 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others.
|
||||
//
|
||||
// This program and the accompanying materials are made available under
|
||||
// the terms of the Eclipse Public License 2.0 which is available at
|
||||
// https://www.eclipse.org/legal/epl-2.0
|
||||
//
|
||||
// This Source Code may also be made available under the following
|
||||
// Secondary Licenses when the conditions for such availability set
|
||||
// forth in the Eclipse Public License, v. 2.0 are satisfied:
|
||||
// the Apache License v2.0 which is available at
|
||||
// https://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
|
||||
// ========================================================================
|
||||
//
|
||||
|
||||
package org.eclipse.jetty.util.preventers;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
public class GCThreadLeakPreventer extends AbstractLeakPreventer
|
||||
{
|
||||
|
||||
@Override
|
||||
public void prevent(ClassLoader loader)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> clazz = Class.forName("sun.misc.GC");
|
||||
Method requestLatency = clazz.getMethod("requestLatency", new Class[]{long.class});
|
||||
requestLatency.invoke(null, (Long)(Long.MAX_VALUE - 1));
|
||||
}
|
||||
catch (ClassNotFoundException e)
|
||||
{
|
||||
LOG.trace("IGNORED", e);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
LOG.warn("Unable to set GC latency", e);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue