Найдено результатов: 6

Практическое применение System.WeakReference

Я понимаю, что делает System.WeakReference , но то, что я не могу понять, - это практический пример того, для чего он может быть полезен. Сам класс мне кажется, ну, в общем, халтурой. Мне кажется, что есть и другие, лучшие способы решения проблемы, когда в примерах, которые я видел, используется WeakReference. Каков канонический пример того, где вы действительно должны использовать WeakReference? Разве мы не пытаемся уйти дальше от такого типа поведения и использования этого класса?

.net   garbage-collection    

482   4   04:58, 29th August, 2020


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

У меня есть класс "Status" в C#,, используемый следующим образом:

Status MyFunction()
{
   if(...) // something bad
     return new Status(false, "Something went wrong")
   else
     return new Status(true, "OK");
}

Вы поняли идею. Все абоненты MyFunction должны проверить возвращенный статус:

Status myStatus = MyFunction();
if ( ! myStatus.IsOK() )
   // handle it, show a message,...

Ленивые абоненты, однако, могут игнорировать статус.

MyFunction(); // call function and ignore returned Status

или

{
  Status myStatus = MyFunction(); 
} // lose all references to myStatus, without calling IsOK() on it

Можно ли сделать это невозможным? например, исключение броска

В общем : можно ли написать класс C#, на котором вы должны вызвать определенную функцию?

В версии C++ класса Status я могу написать тест на некотором частном bool bIsChecked в деструкторе и позвонить в некоторые колокола, когда кто-то не проверяет этот экземпляр.

Что такое эквивалентный вариант в C#? Я где-то читал, что " вам не нужен деструктор в вашем классе C#"

Является ли метод Dispose интерфейса IDisposable опцией?

В этом случае нет неуправляемых ресурсов для освобождения. Кроме того, не определено, когда GC будет утилизировать объект. Когда он в конечном итоге будет удален, все еще можно узнать, где и когда вы проигнорировали этот конкретный экземпляр состояния? Ключевое слово "using" действительно помогает, Но опять же, оно не требуется для ленивых абонентов.

c#   garbage-collection   dispose   destructor    

443   11   16:58, 10th August, 2020


Почему Java и Python методы сбора мусора отличаются?

Python использует метод подсчета ссылок для обработки времени жизни объекта. Таким образом, объект, который больше не имеет смысла, будет немедленно уничтожен.

Но в Java GC (сборщик мусора) уничтожает объекты, которые больше не используются в определенное время.

Почему Java выбирает именно эту стратегию и в чем ее польза?

Это лучше, чем подход Python?

java   python   garbage-collection    

475   9   04:42, 12th August, 2020


Схемы кэширования для управляемых языков

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

Есть ли какие-либо готовые схемы кэширования, из которых я мог бы заимствовать некоторые идеи?

caching   garbage-collection    

457   2   12:55, 10th August, 2020


Java и вручную завершить выполнение

Если я вызову finalize() для объекта из моего программного кода, будет ли JVM все еще запускать метод снова, когда сборщик мусора обрабатывает этот объект?

Это был бы примерный пример:

MyObject m = new MyObject();

m.finalize();

m = null;

System.gc()

Может ли явный вызов finalize() заставить сборщик мусора JVM не запускать метод finalize() на объекте m ?

java   garbage-collection   finalize    

420   3   08:30, 1st August, 2020


Почему вы не вызываете явно finalize() или не запускаете сборщик мусора?

Прочитав этот вопрос, я вспомнил, как меня учили Java и говорили никогда не звонить finalize() и не запускать сборщик мусора, потому что "это большой черный ящик, о котором вам никогда не нужно беспокоиться". Может ли кто-нибудь свести рассуждения об этом к нескольким предложениям? Я уверен, что мог бы прочитать технический отчет Sun по этому вопросу, но я думаю, что хороший, короткий, простой ответ удовлетворил бы мое любопытство.

java   garbage-collection    

531   7   21:06, 1st October, 2020