< prev index next >

src/java.base/share/classes/java/lang/ref/SoftReference.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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.  Oracle designates this

@@ -28,10 +28,13 @@
 
 /**
  * Soft reference objects, which are cleared at the discretion of the garbage
  * collector in response to memory demand.  Soft references are most often used
  * to implement memory-sensitive caches.
+ * <p>
+ * The referent must not be an instance of an inline class; such a value
+ * can never have another reference to it and cannot be held in a reference type.
  *
  * <p> Suppose that the garbage collector determines at a certain point in time
  * that an object is <a href="package-summary.html#reachability">softly
  * reachable</a>.  At that time it may choose to clear atomically all soft
  * references to that object and all soft references to any other

@@ -78,10 +81,12 @@
     /**
      * Creates a new soft reference that refers to the given object.  The new
      * reference is not registered with any queue.
      *
      * @param referent object the new soft reference will refer to
+     * @throws IllegalArgumentException if the referent is an instance of an
+     *         {@link Class#isInlineClass() inlineClass}
      */
     public SoftReference(T referent) {
         super(referent);
         this.timestamp = clock;
     }

@@ -91,11 +96,12 @@
      * registered with the given queue.
      *
      * @param referent object the new soft reference will refer to
      * @param q the queue with which the reference is to be registered,
      *          or {@code null} if registration is not required
-     *
+     * @throws IllegalArgumentException if the referent is an instance of an
+     *         {@link Class#isInlineClass() inlineClass}
      */
     public SoftReference(T referent, ReferenceQueue<? super T> q) {
         super(referent, q);
         this.timestamp = clock;
     }
< prev index next >