Настройки параметров теста:
1. Цикл, чтобы назвать новый a () для достижения переполнения кучи, java.lang.outofmemoryerror: java gup space,
Параметры виртуальной машины: -xms1m -xmx1m -xx:+heapdumponoutofmemoryerror, объяснение: Настройка -xmx и -xms на то же самое могут избежать автоматического расширения кучи. -Xx:+HeapdumponoutofmemoryError позволяет виртуальной машине сбрасывать снимки дамп памяти текущего кучи, когда происходит исключение переполнения памяти.
// while (true) {// new a (). do2 (); //}2. Печать, чтобы вызвать ссылки на объекты для достижения переполнения стека. java.lang.stackoverflowerror,
Параметры виртуальной машины: -xss128k,
Объяснение: Установите размер стека виртуальных машин на 128K
Под одним потоком приведенная выше ошибка будет выбрана независимо от того, является ли рамка стека слишком велика или емкость стека виртуальных машин слишком мала, и память не может быть выделена.
void do2 () {do2 ();};3. Цикл, чтобы вызвать метод string.intern () для записи в постоянный пул, и постоянный переполнение пула. java.lang.outofmemoryerror: permgen space
while (true) {list.add (string.valueof (i ++). inger ()); }Параметры виртуальной машины: -xx: permsize = 10m -xx: maxpermsize = 10m,
Объяснение: Указывает, что емкость и максимальная емкость постоянной генерации, первоначально выделенной JVM. (Постоянная область имеет недостаточную память, и все это на куче после 1.8. Зона метода = постоянная генерация, пространство пермина », то есть постоянная генерация)
Четыре эталонных состояния: (Наследование класса расширяет SleaseReference <Ar>)
1. Сильная цитата: объект obj = new Object (). Пока сильная цитата все еще существует, сборщик мусора никогда не будет собирать ссылочный объект;
2. Softreference: Softreference, объекты, связанные с мягким эталоном, будут переработаны при недостаточной памяти. Если в этой переработке недостаточно памяти, будет брошено исключение переполнения памяти; Softreference <byte []> sr = new softreference <byte []> (bytes);
3. Слабая ссылка: Shabreference, объекты, связанные со слабыми ссылками, могут выжить только до следующей сбора мусора;
4. Виртуальная ссылка: PhantomReference, виртуальная ссылка используется для отслеживания состояния утилизации объектов.
Временное время, чтобы запустить GC:
1. Когда молодое поколение или старшее поколение заполнено, виртуальная машина Java больше не может выделять пространство памяти для новых объектов, тогда виртуальная машина Java запускает GC для переработки объектов, которые больше не будут использоваться.
2. System.gc (), Runtime.getRuntime (). GC () Методы обычно запускают полный GC и, по крайней мере, один незначительный GC, и его не могут быть немедленно переработаны.
3. Запускается, когда сервер простаивает или пожилые люди находятся в куче.
Уточните пространство, занятое без ссылок, а не самим объектом.
Но это также непредсказуемо, в какой момент реальный механизм сбора мусора начнет действовать (неопенсильно источник), который является тем же принципом, что и упреждающий нить, когда он вступает в силу.
Алгоритм сбора поколений:
Коллекционеры нового поколения и коллекционеры старших поколений.
Алгоритм для очистки от марки
Алгоритм Марка-Организации
Разница между переполнением памяти и утечкой памяти:
1. Переполнение памяти: у программы не хватает места при распределении памяти.
2. Утечка памяти: после того, как программа применяется к памяти, у нее нет возможности освободить память. Он всегда занимает память, то есть выделенный объект может быть достигнут, но бесполезен. Утечки памяти обычно вызваны большим объектом в памяти, но не могут быть выпущены. Вызовет переполнение памяти.
Параллель и параллелизм:
1. Параллель: относится к работе нескольких резьбов коллектора мусора;
2. Параллелизм: относится к потоке пользователя, а потока мусора работают одновременно.
Механизм загрузки класса:
1. Загрузка (генерирование объекта java.lang.class), проверка, подготовка, анализ, инициализация (процесс назначения), использование (с использованием) и разгрузки (разгрузка)
2. Убедитесь (верна ли информация, содержащаяся в байтовом потоке, и соответствует ли она JVM),
Подготовьте (присвоение значением переменным класса, то есть статические переменные, назначить 0),
Три части анализа (замените символические ссылки на прямые ссылки, файл класса на память) коллективно называются Linking (связывание)
3. Стадия загрузки: Получите двоичный поток файла .class;
Поместите содержимое информации класса, статических переменных, байткодов и константов в область метода
Создайте объект java.lang.class, представляющий этот файл .class в памяти в качестве портала доступа для различных данных в области метода этого класса.
4. То, что вы делаете на этапе инициализации, - это вызвать метод клиента> для назначения статической переменной указанному пользователю и выполнить статические кодовые блоки.
Родительская модель делегирования: (Запуск класса загрузчик> Расширенный загрузчик класса> Загрузчик класса приложения> Пользовательский загрузчик класса)
Загрузчик класса получает запрос на загрузку класса и делегирует запрос на загрузчик родительского класса для завершения. Только после того, как родительский класс не завершит его, это завершит его самостоятельно.
Принцип возникновения:
Невозможно полагаться исключительно на синхронизированный и нестабильный, чтобы ограничить порядок в памяти Java. Это зависит от правил заказа вызовов программы, чтобы определить порядок сеттеров и добычи.
Незначительный GC: очистите память молодого пояса, не в состоянии выделить пространство для нового объекта.
Основной GC: это должно очистить старость, и многие основные GCs запускаются незначительными GC
Полный GC: это должно очистить все пространство кучи, включая молодое поколение и старшее поколение