< prev index next >

test/jdk/java/awt/image/BufferedImage/ICMColorDataTest/ICMColorDataTest.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 28,45 **** import java.awt.image.IndexColorModel; import java.awt.image.MultiPixelPackedSampleModel; import java.awt.image.Raster; import java.awt.image.SampleModel; import java.awt.image.WritableRaster; /* * @test ! * @bug 8201433 * @summary This test may throw OOME or NPE from native code, * it should not crash * @requires os.maxMemory >= 2G ! * @run main/othervm/timeout=300000 -Xms1000m -Xmx1000m ICMColorDataTest */ public class ICMColorDataTest { private static final int WIDTH = 90; private static final int HEIGHT = 90; private static final int BITS_PER_PIXEL = 1; --- 28,50 ---- import java.awt.image.IndexColorModel; import java.awt.image.MultiPixelPackedSampleModel; import java.awt.image.Raster; import java.awt.image.SampleModel; import java.awt.image.WritableRaster; + import java.lang.ref.PhantomReference; + import java.lang.ref.Reference; + import java.lang.ref.ReferenceQueue; + import java.util.ArrayList; + import java.util.List; /* * @test ! * @bug 8201433 8232634 * @summary This test may throw OOME or NPE from native code, * it should not crash * @requires os.maxMemory >= 2G ! * @run main/othervm/timeout=600 -Xms1000m -Xmx1000m -XX:+UseSerialGC ICMColorDataTest */ public class ICMColorDataTest { private static final int WIDTH = 90; private static final int HEIGHT = 90; private static final int BITS_PER_PIXEL = 1;
*** 48,60 **** // Color model components private static final byte[] RED = { (byte) 255, 0 }; private static final byte[] GREEN = { (byte) 255, 0 }; private static final byte[] BLUE = { (byte) 255, 0 }; public static void main(String[] args) { try { ! for (long i = 0; i < 300_000; i++) { makeImage(); } } catch (OutOfMemoryError | NullPointerException e) { System.err.println("Caught expected exception:\n" + e.getClass() + ": " + e.getMessage()); --- 53,76 ---- // Color model components private static final byte[] RED = { (byte) 255, 0 }; private static final byte[] GREEN = { (byte) 255, 0 }; private static final byte[] BLUE = { (byte) 255, 0 }; + private static final int MAX_SIZE = 10; + + private static final ReferenceQueue<Object> refQueue = + new ReferenceQueue<>(); + private static final List<Reference<Object>> refList = + new ArrayList<>(MAX_SIZE); + public static void main(String[] args) { try { ! for (long i = 0; i < 30_000; i++) { ! if (refQueue.poll() != null) { ! System.err.println("Garbage collector was invoked"); ! break; ! } makeImage(); } } catch (OutOfMemoryError | NullPointerException e) { System.err.println("Caught expected exception:\n" + e.getClass() + ": " + e.getMessage());
*** 79,85 **** --- 95,105 ---- indexModel.isAlphaPremultiplied(), null); Graphics g = bufImage.getGraphics(); g.drawRect(0, 0, WIDTH - 1, HEIGHT - 1); g.dispose(); + + if (refList.size() < MAX_SIZE) { + refList.add(new PhantomReference<>(bufImage, refQueue)); + } } }
< prev index next >