Что такое пространство перманента?

Я думаю одна из основных проблем (который обращается в PHP 6), register_globals. Прямо сейчас один из стандартных методов раньше избегал register_globals должен использовать $_REQUEST, $_GET или $_POST массивы.

"Корректный" способ сделать это (с 5,2, хотя это - немного багги там, но стабильный с 6, который прибывает скоро) через фильтры.

Таким образом вместо:

$username = $_POST["username"];

Вы сделали бы:

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

или даже просто:

$username = filter_input(INPUT_POST, 'username');

84
задан skiphoppy 14 August 2009 в 18:35
поделиться

5 ответов

Это означает постоянное поколение :

Постоянное поколение является особенным потому что он содержит метаданные, описывающие пользовательские классы (классы, которые не часть языка Java). Примеры таких метаданных являются объектами описание классов и методов и они хранятся в постоянном Поколение. Приложения с большими code-base может быстро пополнить этот сегмент кучи, который вызовет java.lang.OutOfMemoryError : PermGen нет независимо от того, насколько высок ваш -Xmx и сколько память, имеющаяся у вас на машине.

100
ответ дан 24 November 2019 в 08:33
поделиться

Простой (и слишком упрощенный) ответ: именно здесь jvm хранит свои собственные бухгалтерские данные, а не ваши данные.

19
ответ дан 24 November 2019 в 08:33
поделиться

Permgen space - это область кучи, которая содержит все отражающие данные самой виртуальной машины, такие как объекты классов и методов.

4
ответ дан 24 November 2019 в 08:33
поделиться

Он содержит такие вещи, как определения классов, пул строк и т. Д. Я думаю, вы могли бы назвать это метаданными.

2
ответ дан 24 November 2019 в 08:33
поделиться

Perm space используется для хранения информации о загруженных классах и некоторых других расширенных функций, таких как String Pool (для высокооптимизированного тестирования равенства строк), которые обычно создаются методами String.intern () . По мере того, как ваше приложение (количество классов) будет расти, это пространство должно быстро заполняться, поскольку сборка мусора в этом пространстве не очень эффективна для очистки по мере необходимости, вы быстро получаете ошибку Out of Memory: perm gen space. После этого ни одно приложение не будет эффективно работать на этой машине даже после огромной пустой JVM.

Перед запуском приложения вы должны java -XX: MaxPermSize , чтобы избавиться от этой ошибки.

25
ответ дан 24 November 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: