Почему.NET не имеет SoftReference, а также WeakReference, как Java?

Вы можете потребовать полифонию в точке входа к вашему коду, чтобы он был связан с остальной частью JavaScript.

Один из вариантов заключается в использовании:

require('babel-polyfill');

Или :

import 'babel-polyfill';

Все это объяснено в документацией .

17
задан 27 November 2008 в 20:52
поделиться

7 ответов

Мое предположение относительно того, почему это не там уже, было бы простотой. Большинство людей, я думаю, назвало бы это достоинством, что существует только один тип ссылки, не четыре.

4
ответ дан 30 November 2019 в 11:04
поделиться

Наличие WeakReference с переменными уровнями слабости (приоритет) звуки хороший, но также и могло бы сделать задание GC тяжелее, не легче. (Я понятия не имею о внутренностях GC, но) я принял бы там своего рода дополнительные статистические данные доступа, которые сохранены для объектов WeakReference так, чтобы GC мог очистить их эффективно (например, он мог бы избавиться от наименее используемых объектов сначала).

[еще 112], чем, вероятно, добавленная сложность ничего больше не делал бы эффективным, потому что самый эффективный путь состоит в том, чтобы избавиться от нечасто используемого WeakReferences сначала. Если бы Вы могли бы присвоить приоритет, как Вы сделали бы это? Это пахнет как преждевременная оптимизация: программист действительно не знает большую часть времени и предполагает; результатом является более медленный цикл сбора GC, который, вероятно, исправляет неправильные объекты.

Это вызывает вопрос, хотя, это, если Вы заботитесь о WeakReference. Исправляемый целевой объект, это - действительно хорошее использование WeakReference?

Это похоже на кэш. Вы пихаете материал в кэш и просите, чтобы кэш заставил его утратить новизну после x минуты, но большинство кэшей никогда не гарантирует, что имело в наличии его вообще. Это просто гарантирует, что, если это делает, это истечет он согласно политике, которую требуют.

4
ответ дан 30 November 2019 в 11:04
поделиться

Не забывайте, что у Вас также есть свои стандартные ссылки (те, что Вы используете ежедневно). Это дает Вам еще один уровень.

WeakReferences должен использоваться, когда Вы действительно не заботитесь, уходит ли объект, в то время как SoftReferences действительно только должен использоваться, когда Вы использовали бы нормальную ссылку, но Вы будете скорее свой объект быть очищенным затем, чтобы у Вас закончилась память. Я не уверен в специфических особенностях, но я подозреваю, что GC обычно прослеживает через SoftReferences, но не WeakReferences при определении, какие объекты живы, но когда испытывание нехватку памяти также пропустит SoftReferences.

Мое предположение - то, что разработчики .NET чувствовали, что различие сбивало с толку большинство людей и или что SoftReferences добавляют больше сложности, чем они действительно хотели и так решили пропустить их.

Как примечание стороны, AFAIK PhantomReferences главным образом разработан для внутреннего пользования виртуальной машиной и не предназначается для фактического клиентского использования.

2
ответ дан 30 November 2019 в 11:04
поделиться

Поиск 'trackResurrection' опции передал конструктору, возможно?

класс GC также предлагает некоторую помощь.

0
ответ дан 30 November 2019 в 11:04
поделиться

Возможно, должно быть свойство, где можно указать, какое Поколение, что объект> =, прежде чем это будет собрано. Таким образом, если Вы указываете 1 затем, это - самая слабая ссылка. Но если бы Вы указываете 3 затем, это должно было бы пережить по крайней мере 3 предшествующих набора, прежде чем это можно будет рассмотреть для самого набора.

я думал, что дорожка ressurection флаг была бесполезна для этого, потому что к тому времени объект был уже завершен? Может быть неправильным хотя...

(PS: Я - OP, просто подписанный. ЛАВАШ, что это не наследовало Вашу историю от "незарегистрированных" учетных записей.)

1
ответ дан 30 November 2019 в 11:04
поделиться

Не знайте, почему.NET не имеет Softreferences. НО в Java, по моему скромному мнению, злоупотребляются Softreferences. Причиной является tha, по крайней мере, в сервере приложений, на который Вы хотели бы смочь влиять на приложение, сколько времени Ваши Softreferenzen живут. Это в настоящее время не возможно в Java.

0
ответ дан 30 November 2019 в 11:04
поделиться

Может быть, класс ASP.NET Cache (System.Web.Caching.Cache) поможет достичь того, чего вы хотите? Он автоматически удаляет объекты при нехватке памяти:

Вот статья, в которой показано, как использовать класс Cache в приложении Windows Forms.

цитата из: Эквивалентно SoftReference в .net?

3
ответ дан 30 November 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: