2013-11-17 6 views
-2

Я понимаю, что освобождение памяти необходимо на любом языке. Но Java предоставляет его и освобождает программистов от беспокойства по поводу деактивации памяти.Почему Java предоставляет сборку мусора?

Теперь, что я собрал, только преимущество java, обеспечивающего механизм сбора мусора, заключается в том, что накладные расходы программистов уменьшаются. Но накладные расходы JVM увеличены.

Я сомневаюсь, что это единственное преимущество сборки мусора java или я пропустил какой-то другой момент?

+1

GC не требуется ни на одном языке. На самом деле, существует много языков без него, а именно C. –

+0

вы понимаете, что gc будет «необходим на любом языке», но «только преимущество java, обеспечивающего механизм сбора мусора, заключается в том, что накладные расходы программистов сокращаются»? разве вы не противоречите себе? – eis

+0

@ el.pescado тоже в 'C', это называется' free'. Только программисты делают это «вручную» – rolfl

ответ

2

На бумаге, ваше утверждение, что программист накладные расходы снижается является «правильным», но я думаю, что вы недооцениваете количество усилий, что хорошее управление памятью происходит в «ручном» языках коллекции как C, и т. д. Не только объем дисциплины, необходимый для обеспечения освобождения всей памяти malloc'd, но часы, потраченные на отладку утечек памяти и т. д., когда все идет не так.

Реальная жизнь аналогия хороша .....

Как насчет если мы все должны были displose наших собственных отходов (сточных вод, мусора и т.д.). Конечно, мы можем это сделать, но разве не приятно, когда люди приходят в наш дом, чтобы забрать его, правильно утилизировать и т. Д.

+0

После отладки утечек классов и аналогичных довольно много, я должен сказать, что наличие GC не означает, что один из них свободен от утечки памяти отладки. – eis

+0

Правда, там, но порог, с которым люди сталкиваются с проблемами памяти с Java, намного выше, чем языки, такие как C – rolfl

+0

+1 для реальной аналогии :). Итак, я ничего не пропускаю. Это просто, чтобы сделать нашу жизнь легкой. – Batty

1
  • Во-первых, это может сделать вас более продуктивным. При программировании на языках, не связанных с мусором, вы можете потратить много поздних часов (или дней или недель), преследуя проблему неуловимой памяти. При программировании на Java вы можете использовать это время более выгодно, опережая график или просто отправляясь домой, чтобы иметь жизнь.

  • Второе преимущество сбора мусора заключается в том, что оно помогает обеспечить целостность программы. Сбор мусора является важной частью стратегии безопасности Java. Программисты Java не могут случайно (или преднамеренно) сбой виртуальной машины Java путем неправильного освобождения памяти.

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

source.

+0

от ..........? – Florian

+1

от http://www.artima.com/insidejvm/ed2/gc.html – Jimmy

+0

@Jimmy. В ответе уже упоминается 'source'. – Trying

Смежные вопросы