6541641: (fc) java/nio/channels/FileChannel/ExpandingMap.java should clean up after itself
authorsherman
Wed, 16 Jul 2008 15:09:24 -0700
changeset 842 93b8777f4184
parent 841 3234b58ccc92
child 843 e50aa264deca
6541641: (fc) java/nio/channels/FileChannel/ExpandingMap.java should clean up after itself Summary: Close channel and explicitly de-ref the mapped buffers before exit. Reviewed-by: alanb
jdk/test/java/nio/channels/FileChannel/ExpandingMap.java
--- a/jdk/test/java/nio/channels/FileChannel/ExpandingMap.java	Mon Jul 14 14:03:42 2008 -0700
+++ b/jdk/test/java/nio/channels/FileChannel/ExpandingMap.java	Wed Jul 16 15:09:24 2008 -0700
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 4938372
+ * @bug 4938372 6541641
  * @summary Flushing dirty pages prior to unmap can cause Cleaner thread to
  *          abort VM if memory system has pages locked
  */
@@ -39,7 +39,7 @@
 
 public class ExpandingMap {
 
-    public static void main(String[] args) throws IOException {
+    public static void main(String[] args) throws Exception {
 
         int initialSize = 20480*1024;
         int maximumMapSize = 16*1024*1024;
@@ -103,6 +103,13 @@
             }
         }
 
+        fc.close();
+        // cleanup the ref to mapped buffers so they can be GCed
+        for (int i = 0; i < buffers.length; i++)
+            buffers[i] = null;
+        System.gc();
+        // Take a nap to wait for the Cleaner to cleanup those unrefed maps
+        Thread.sleep(1000);
         System.out.println("TEST PASSED");
     }