< prev index next >
src/java.base/share/classes/java/lang/ref/SoftReference.java
Print this page
rev 55532 : 8223582: [lworld] WeakReference of an inline type should throw
*** 28,37 ****
--- 28,40 ----
/**
* 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,87 ****
--- 81,92 ----
/**
* 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,101 ****
* 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,107 ----
* 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 >