Программы Java когда-нибудь аварийно завершают работу? - PullRequest
26 голосов
/ 19 мая 2010

Я программист на С ++, я немного знаю о Java. Я знаю, что Java-программисты не должны работать с памятью напрямую, как C ++. Я также знаю, что большинство сбоев в приложениях C ++ связано с повреждениями памяти.

Так может ли приложение, написанное на Java, зависать из-за проблем с памятью?

Спасибо

Ответы [ 12 ]

0 голосов
/ 19 мая 2010

Нет. Приложения Java могут аварийно завершить работу из-за проблем с памятью. Хотя в Java есть встроенное управление памятью, оно ни в коем случае не идеально. Просто для вас проделана большая тяжелая работа.

Как упоминалось в некоторых других ответах, Java имеет довольно специфическую систему выделения памяти, которая включает в себя довольно много ручного управления, и на самом деле довольно легко исчерпать это распределение, если вы не осторожны и не имеете он настроен правильно для вашего приложения.

(см. Параметры -Xmx и -Xms для Java)

0 голосов
/ 19 мая 2010

Итак, приложение, написанное на Java, будет никогда не падает из-за памяти вопрос.

OutOfMemoryError - это проблема памяти. Кроме того, вы можете получить «реальный» сбой (segfault), когда обнаружена ошибка в JVM (которая обычно пишется на C или C ++), или когда есть проблема с оборудованием (например, плохая память). Возможно также, когда вы запускаете недопустимый байт-код в JVM, которая его не проверяет (например, JVM для встроенных систем).

Но обычно да, программы на Java не имеют ошибок.

...