Истинных слабых ссылок, нет, пока нет (но производители браузеров смотрят на эту тему). Но вот идея о том, как симулировать слабые ссылки.
Вы можете создать кеш, через который вы ведете свои объекты. Когда объект сохраняется, кэш сохраняет прогноз того, сколько памяти займет этот объект. Для некоторых элементов, таких как хранение изображений, это прямо для работы. Для других это будет сложнее.
Когда вам нужен объект, вы запрашиваете его в кеше. Если в кеше есть объект, он возвращается. Если его там нет, то элемент генерируется, сохраняется и затем возвращается.
Слабые ссылки моделируются элементами, удаляющими кэш, когда общий объем прогнозируемой памяти достигает определенного уровня. Он будет прогнозировать, какие элементы наименее используются, исходя из того, как часто они извлекаются, с учетом того, как давно они были вывезены. Можно также добавить стоимость вычисления, если код, который создает элемент, передается в кеш как замыкание. Это позволило бы кешу хранить элементы, которые очень дорого построить или сгенерировать.
Алгоритм удаления является ключевым, потому что, если вы ошибетесь, вы можете удалить самые популярные элементы. Это приведет к ужасной производительности.
Поскольку кэш-память является единственным объектом с постоянными ссылками на сохраненные объекты, то вышеуказанная система должна работать в качестве альтернативы истинным слабым ссылкам.