< prev index next >

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

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 1997, 2003, 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
--- 1,7 ---
  /*
!  * 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 a primitive 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 a
+      *         {@link Class#isPrimitiveClass() primitive class}
       */
      public SoftReference(T referent) {
          super(referent);
          this.timestamp = clock;
      }

*** 91,11 ***
       * 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
!      *
       */
      public SoftReference(T referent, ReferenceQueue<? super T> q) {
          super(referent, q);
          this.timestamp = clock;
      }
--- 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 a
+      *         {@link Class#isPrimitiveClass() primitive class}
       */
      public SoftReference(T referent, ReferenceQueue<? super T> q) {
          super(referent, q);
          this.timestamp = clock;
      }
< prev index next >