<Beans Dev> Fwd: Re: [PATCH] test/jdk/java/beans/PropertyEditor/Test6397609.java failed in JITed code
Fu Jie
fujie at loongson.cn
Fri Jan 4 06:44:20 UTC 2019
Hi,
I think it's really hard to say that all weak references would be
reclaimed by just calling "System.gc()" 10 times.
Sergey's suggestion is much better. And I made another patch to fix this
issue.
----------------------------------------------------------------------
diff -r 2345e253e677 test/jdk/java/beans/PropertyEditor/Test6397609.java
--- a/test/jdk/java/beans/PropertyEditor/Test6397609.java Thu Jan 03
15:54:01 2019 -0500
+++ b/test/jdk/java/beans/PropertyEditor/Test6397609.java Fri Jan 04
14:32:55 2019 +0800
@@ -32,6 +32,8 @@
*/
import java.beans.PropertyEditorManager;
+import java.lang.ref.Reference;
+import java.util.Vector;
public class Test6397609 {
public static void main(String[] args) throws Exception {
@@ -44,6 +46,7 @@
if (!isEditorExist(Object.class)) {
throw new Error("the editor is lost");
}
+ Reference.reachabilityFence(loader);
loader = null; // clean the reference
if (isEditorExist(Object.class)) {
throw new Error("unexpected editor is found");
@@ -51,12 +54,22 @@
}
private static boolean isEditorExist(Class type) {
- for (int i = 0; i < 10; i++) {
- System.gc(); // clean all weak references
- if (null == PropertyEditorManager.findEditor(type)) {
- return false;
+ Vector<byte[]> garbage = new Vector<byte[]>();
+ // clean all weak references
+ while (true) {
+ try {
+ garbage.add(new byte[180306]);
+ }
+ catch (OutOfMemoryError e) {
+ break;
}
}
- return true;
+ garbage = null;
+
+ if (null == PropertyEditorManager.findEditor(type)) {
+ return false;
+ } else {
+ return true;
+ }
}
}
----------------------------------------------------------------------
Would you please review it and give me some advice?
Thanks.
Best Regards,
Jie
On 2019/1/4 上午6:35, Sergey Bylokhov wrote:
> I am not sure that "System.gc()" will cause to cleanup all
> weak references, probably we should generate+catch the real OOM
> at the second part of the test?
>
More information about the beans-dev
mailing list