Встречается на собеседованиях • сегодня

В чем разница в очистке стека в C# и Java

В Java сборщик мусора (GC) автоматически управляет памятью в куче, но не касается стека. Стек очищается при выходе из метода — локальные переменные (примитивы и ссылки) удаляются сразу. В C# стек также очищается автоматически при завершении метода, но есть ключевое отличие:

  • Java: Нет деструкторов или using для стека.
  • C#: Поддерживает IDisposable и using для детерминированного освобождения ресурсов, даже если переменная в стеке (например, обертка над неуправляемым ресурсом).

Пример C#:

csharp
using (var resource = new FileStream("file.txt", FileMode.Open)) 
{
    // работа с ресурсом
} // автоматический вызов Dispose()

В Java аналог — try-with-resources:

java
try (InputStream is = new FileInputStream("file.txt")) {
    // работа с ресурсом
} // автоматический вызов close()

Оба языка очищают стек при выходе из метода, но C# дает больше контроля над ресурсами через IDisposable.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы