|
|
|
Как убирается мусор из permgen ?
|
|||
|---|---|---|---|
|
#18+
Ничего конкретного не прочитал, про чистку в permgen. Насколько я понял permgen/metaspace хранит в основном метаданные классов(ещё что-то?) Загрузкой классов занимается classLoader. Это обычный класс, экземпляр которого хранится в хипе. если в пермгене у классов, нет ссылок на наш класслоадер, то те классы, которые он загрузил монут быть выгружены(почищены из пермгена) А как это происходит обычно? по таймауту или по достижении определенного объема? различается ли алгоритм от gc к gc ? тот самый gc, что чистит хип этим занимается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 18:55 |
|
||
|
Как убирается мусор из permgen ?
|
|||
|---|---|---|---|
|
#18+
questioner, Я разве не приводил эту ссылку? Там, вроде, достаточно доходчиво расписано какими крутилками Metaspace настраивается. http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/considerations.html Из этих крутлок реализация GC и исходит. PermGen работал слегка иначе. На сколько я понял, Metaspace не заменяет PermGen на 100%, часть объектов пришлось оставить в обычной куче после отказа от PermGen. Но есть ли смысл изучать PermGen? Не проще ли принять его за устаревшую технологию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 19:05 |
|
||
|
Как убирается мусор из permgen ?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestioner, Я разве не приводил эту ссылку? Там, вроде, достаточно доходчиво расписано какими крутилками Metaspace настраивается. http://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/considerations.html Из этих крутлок реализация GC и исходит. PermGen работал слегка иначе. На сколько я понял, Metaspace не заменяет PermGen на 100%, часть объектов пришлось оставить в обычной куче после отказа от PermGen. Но есть ли смысл изучать PermGen? Не проще ли принять его за устаревшую технологию? я просто исходил из того, что это +/- одно и то же. Ну мне не так интересны конкретные крутилки, хочу сначала верхнеуровенево понять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 19:10 |
|
||
|
Как убирается мусор из permgen ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ещё я не понял куда утекает пермген при работает с ThreadLocal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 19:20 |
|
||
|
Как убирается мусор из permgen ?
|
|||
|---|---|---|---|
|
#18+
questionerя просто исходил из того, что это +/- одно и то же. Ну, мне не так интересны конкретные крутилки, хочу сначала верхнеуровенево понять Просто вопросы слишком детальные. Когда коллектор вызывается? Да, когда надо, тогда и вызывается. Это вообще не существенно для метаспейса и пермгена. С этим проблемы возникают крайне редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 20:52 |
|
||
|
Как убирается мусор из permgen ?
|
|||
|---|---|---|---|
|
#18+
questionerещё я не понял куда утекает пермген при работает с ThreadLocal ThreadLocal это класс, загружаемый бустрап класслоадером. Соответственно этот класслоадер никогда не будет собран, как и этот класс. Если вы, вдруг, не почистили ссылку, и она там валяется, то ГЦ не может собрать объект, так как ThreadLocal на него ссылается. Не может собрать объект, значит не может собрать и класс. Не может собрать класс, значит не может собрать и его лоадер. Не может собрать лоадер, значит не соберёт и все классы им загруженные (хотя эту багофичу может и исправят со временем). То есть лоадер и все его классы будут занимать место в пермгене. Новые класслоадеры создаются контейнерами при загрузке новых модулей. Таким образом классы разных модулей изолируются друг от друга. Чаще всего это проявляется при редеплое модуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 20:58 |
|
||
|
Как убирается мусор из permgen ?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestionerещё я не понял куда утекает пермген при работает с ThreadLocal ThreadLocal это класс, загружаемый бустрап класслоадером. Соответственно этот класслоадер никогда не будет собран, как и этот класс. Если вы, вдруг, не почистили ссылку, и она там валяется, то ГЦ не может собрать объект, так как ThreadLocal на него ссылается. Не может собрать объект, значит не может собрать и класс. Не может собрать класс, значит не может собрать и его лоадер. Не может собрать лоадер, значит не соберёт и все классы им загруженные (хотя эту багофичу может и исправят со временем). То есть лоадер и все его классы будут занимать место в пермгене. Новые класслоадеры создаются контейнерами при загрузке новых модулей. Таким образом классы разных модулей изолируются друг от друга. Чаще всего это проявляется при редеплое модуля. о, как круто! спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2016, 00:10 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=78&tid=2123318]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 371ms |

| 0 / 0 |
