Обновление поля timestamp в классе SoftReference

158
16 апреля 2018, 01:11

В исходном коде класса SoftReference есть такое поле:

/**
 * Timestamp updated by each invocation of the get method.  The VM may use
 * this field when selecting soft references to be cleared, but it is not
 * required to do so.
 */
private long timestamp;

Согласно документации к методу, каждый вызов get должен приводить к обновлению поля timestamp. Но этого не происходит и я не могу понять почему. В качестве эксперемента написал такой класс:

import java.lang.ref.SoftReference;
import java.lang.reflect.Field;
public class SoftReferenceTest {
    public static void main(String[] args) throws Exception {
        SoftReference<StringBuilder> softReference = new SoftReference<>(new StringBuilder());
        long timestamp = getTimestamp(softReference);
        for (int i = 0; i < 10; i++) {
            checkTimestampChange(softReference, timestamp);
        }
    }
    private static void checkTimestampChange(SoftReference softReference, long timestampBefore) throws Exception {
        softReference.get();
        Thread.sleep(100);
        assert timestampBefore == getTimestamp(softReference);
    }

    private static long getTimestamp(Object object) throws Exception {
        Field timestampField = SoftReference.class.getDeclaredField("timestamp");
        timestampField.setAccessible(true);
        long timestamp = timestampField.getLong(object);
        timestampField.setAccessible(false);
        return timestamp;
    }
}

Код успешно выполнился без ошибок. Не могу понять почему.

READ ALSO
Стоит ли переходить на обучение Java 10?

Стоит ли переходить на обучение Java 10?

Стоит ли бросать Java 8 и продолжать свое обучение с Java 10? Тем более, как я слышал, они рассматривают идею перейти на полугодовой график релизов...

119
sendRedirect на предыдущую страницу при смене языка

sendRedirect на предыдущую страницу при смене языка

Проблема в следующем - хочу сделать мультиязычное Java web-приложение, чтобы во всех страницах приложения была возможность переключаться между...

126
Вложенный SQL запрос по структуре таблицы

Вложенный SQL запрос по структуре таблицы

Есть бд с такой структуройКак написать запрос который бы выдавал fio, price, quality и telephone зная только fromUser из таблицы bids?

151
Импорт в таблицу MySQL из CSV файла

Импорт в таблицу MySQL из CSV файла

Как импортировать данные в таблицу MySQL из CSV файла?

177