Skip to main content

Что такое Soft Reference?

В языке программирования Java® ссылки на объекты, строки и переменные постоянно делаются, даже если программист не знает об этих ссылках. Эти ссылки связываются напрямую с сборщиком мусора, функцией, которая собирает ненужную информацию и выбрасывает ее, чтобы она больше не занимала память. По умолчанию все ссылки являются строгими ссылками и задаются без какого-либо кодирования, то есть они не передаются сборщику мусора. Мягкая ссылка позволяет выбрасывать данные. Это ссылка среднего уровня для всех не сильных ссылок.

Всякий раз, когда программист что-то делает с Java®, будь то создание строки или создание сложных функций, делается ссылка. Программист не должен писать справочную команду; ссылка делается автоматически и по умолчанию является сильной ссылкой. Это означает, что данные из ссылки не могут быть выброшены, поскольку они связаны с интегральными объектами, необходимыми для всего сценария.

Однако некоторые данные необходимо выбросить, поскольку в противном случае они занимают много памяти. Например, если программист создает сценарий, в котором используются серийные номера, или собираются или создаются другие временные фрагменты информации, сохранение этой информации становится вредным. Программа Java® отказывается выбрасывать информацию, даже если она не нужна, а сценарию потребуется все больше и больше памяти для функционирования.

Указывая строку или раздел в качестве мягкой ссылки, которую необходимо поместить в код, это сообщает сборщику мусора, что данные могут быть освобождены. После освобождения строка или раздел будут считаться «нулевыми». Сборщик мусора, в зависимости от его настройки, решит, когда данные должны быть выброшены.

Есть три несильные ссылки: мягкая ссылка, слабая ссылка и фантомная ссылка. Слабая ссылка - самая слабая, и ее данные быстро выбрасываются. Следующие в очереди программные ссылки, которые лучше всего подходят для сценариев, в которых временные данные могут использоваться несколько раз. Призрачная ссылка отбрасывается почти автоматически, в течение секунды, и должна использоваться экономно.

Время, в течение которого мягкая ссылка остается, обычно зависит от объема памяти компьютера. Если память заполнена, то сборщик мусора сначала уничтожит все слабые ссылки. Когда все слабые ссылки исчезнут, и если памяти все еще необходимо очистить данные, то затем будут отброшены мягкие ссылки.