Hi,
Thanks Alan for your guidance. I like this patch and it seems very nice.
Do you think we need to trigger a GC after
"PropertyEditorManager.registerEditor(targetClass, editorClass);"?
Best regards,
Jie
Here's an alternative to consider:
Class<?> targetClass = Object.class;
Class<?> editorClass = new MemoryClassLoader().compile("Editor",
"public class Editor extends
java.beans.PropertyEditorSupport {}");
PropertyEditorManager.registerEditor(targetClass, editorClass);
if (PropertyEditorManager.findEditor(targetClass) == null) {
throw new Error("the editor is lost");
}
// allow, and wait for, Editor class to be unloaded
var ref = new WeakReference<Class<?>>(editorClass);
editorClass = null;
while (ref.get() != null) {
Thread.sleep(100);
System.gc();
}
if (PropertyEditorManager.findEditor(targetClass) != null) {
throw new Error("unexpected editor is found");
}
As regards looping until a weak ref has been cleared then we do this
in many tests. I've no doubt that many tests and features would fail
with -DisableExplicitGC but this shouldn't be a concern here.
-Alan