Это будет более злая статья. В мире Java переполнение памяти - это просто ошибка, которую вы можете представить в этом случае. Ваши жертвы проведут несколько дней или даже несколько недель сна в офисе.
В этой статье я введу два типа методов переполнения, которые легче понять и воспроизводить. И все они являются тематическими исследованиями исходного проекта, но для того, чтобы вы четко поняли, я упрощаю их.
Но будьте уверены, что после того, как мы столкнулись и решили переполненную ошибку, аналогичные случаи будут чаще, чем вы себе представляют.
Давайте сначала введите состояние.
Class CealsEntry {статический класс класса {integer id; Args) {map m = new hashmap (); "номер:" "" + i);}}Когда вы запускаете приведенный выше код, вы можете ожидать, что у него никогда не будет проблем с запуском. Однако это не так. Элементы всегда будут расти, потому что ключевая категория не реализует подходящий метод Equals () после hashcode ().
Решение простое, если вы добавляете метод равных, например, следующий пример. Но прежде чем найти проблему, вы, должно быть, потратили много ценных клеток мозга.
@OverridePublic Boolean Equals (Object O) {Boolean response = false; Следующее, что вы должны напомнить своим друзьям, - это иметь дело со строкой. Его производительность будет странной, особенно когда разница в версиях JVM объединена. Внутренний рабочий механизм String был изменен в JDK 7U6, поэтому, если вы обнаружите, что среда продукта является лишь разницей между небольшим номером версии, то вы готовы к условиям. Tarze код, аналогичный следующему коду, а затем спросите его, почему эта ошибка появляется только в продукте.
Class Stringer {static int mb = 1024*512; nanotime ()); = createLongstring (MB);Что не так с кодом выше? Когда он работает перед версией JDK 7U6, возвращаемая строка сохранит ссылку на строку размером около 1 м. В сочетании с различиями между платформами и версиями в вашей экспериментальной среде возникают вещи, которые повредят писанию мозга.
Теперь, если вы хотите скрыть свои следы, мы можем представить несколько более продвинутых концепций. например
Я надеюсь, что мы дадим вам немного сырья, о которых думают, и некоторые материалы, когда вы хотите кого -то починить. Это принесет бесконечную отладку. Если ваш друг не использует Plumbr, чтобы найти переполненное место.