2017-02-13 5 views
0

Вот в SERVER1 Информация памяти HeapПочему он бросает OOM?

Heap Configuration: 
    MinHeapFreeRatio = 40 
    MaxHeapFreeRatio = 70 
    MaxHeapSize  = 1073741824 (1024.0MB) 
    NewSize   = 1310720 (1.25MB) 
    MaxNewSize  = 17592186044415 MB 
    OldSize   = 5439488 (5.1875MB) 
    NewRatio   = 2 
    SurvivorRatio = 8 
    PermSize   = 157286400 (150.0MB) 
    MaxPermSize  = 157286400 (150.0MB) 

Heap Usage: 
PS Young Generation 
Eden Space: 
    capacity = 19922944 (19.0MB) 
    used  = 19911792 (18.989364624023438MB) 
    free  = 11152 (0.0106353759765625MB) 
    99.94402433696546% used 
From Space: 
    capacity = 12517376 (11.9375MB) 
    used  = 0 (0.0MB) 
    free  = 12517376 (11.9375MB) 
    0.0% used 
To Space: 
    capacity = 13303808 (12.6875MB) 
    used  = 0 (0.0MB) 
    free  = 13303808 (12.6875MB) 
    0.0% used 
PS Old Generation 
    capacity = 715849728 (682.6875MB) 
    used  = 715848480 (682.6863098144531MB) 
    free  = 1248 (0.001190185546875MB) 
    99.99982566173442% used 
PS Perm Generation 
    capacity = 157286400 (150.0MB) 
    used  = 79364440 (75.68782806396484MB) 
    free  = 77921960 (74.31217193603516MB) 
    50.45855204264323% used 

выделяет память 1024M с JVM Heap, но JVM не использовать память, когда она ОЫЙ

У меня есть другой сервер, следующий является кучная Информация о памяти сервера, когда он был ООМ

Heap Configuration: 
    MinHeapFreeRatio = 40 
    MaxHeapFreeRatio = 70 
    MaxHeapSize  = 1073741824 (1024.0MB) 
    NewSize   = 1310720 (1.25MB) 
    MaxNewSize  = 17592186044415 MB 
    OldSize   = 5439488 (5.1875MB) 
    NewRatio   = 2 
    SurvivorRatio = 8 
    PermSize   = 157286400 (150.0MB) 
    MaxPermSize  = 157286400 (150.0MB) 

Heap Usage: 
PS Young Generation 
Eden Space: 
    capacity = 119341056 (113.8125MB) 
    used  = 119253176 (113.72869110107422MB) 
    free  = 87880 (0.08380889892578125MB) 
    99.92636230736889% used 
From Space: 
    capacity = 111869952 (106.6875MB) 
    used  = 0 (0.0MB) 
    free  = 111869952 (106.6875MB) 
    0.0% used 
To Space: 
    capacity = 111149056 (106.0MB) 
    used  = 0 (0.0MB) 
    free  = 111149056 (106.0MB) 
    0.0% used 
PS Old Generation 
    capacity = 715849728 (682.6875MB) 
    used  = 715849720 (682.6874923706055MB) 
    free  = 8 (7.62939453125E-6MB) 
    99.99999888244702% used 
PS Perm Generation 
    capacity = 157286400 (150.0MB) 
    used  = 110605624 (105.48174285888672MB) 
    free  = 46680776 (44.51825714111328MB) 
    70.32116190592448% used 

этот сервер выглядит просто нормален, память реально не хватает

Кто может дать ясное объяснение сервера1 OOM

+0

В обоих случаях Eden и OldGen заполнены, поэтому я думаю, что это причина OOM. Однако на первом сервере меньше емкости NewGen. Какие настройки JVM вы используете для сервера-1? Вы пытались играть с NewRatio и SurvivorRatio? –

+0

Я не изменяю NewRatio и SurvivorRatio, так как вы видите, что по умолчанию у обоих серверов одинаковые настройки NewRatio и SurvivorRatio. –

ответ

1

Как сказал Владимир. У вас есть OldGen full, вы должны проверить соотношение NewRatio и Survivor. Вы также можете запустить приложение с бревнами Gc, и анализировать его внешний инструмент, например: http://gceasy.io (бесплатно) или JClarity Censum (Paid)

Включить журналы Gc посредством предоставления флагов: -XX: + PrintGCDetails -XX: + PrintGCDateStamps -Xloggc: gc.log

+0

спасибо, я не сохраняю журналы gc в это время, поэтому не могу проанализировать. Я попробую в следующий раз. –

0

У вас есть MinHeapFreeRatio = 40, что означает, что GC должен плыть в это время. В идеале ваше пространство, занимаемое вами, должно быть меньше этого процента.

Старый ген, по-видимому, составляет 682 МБ, что означает, что он должен быть действительно не менее 682/0,4 или 1700 МБ (что больше, чем ваше общее количество), но я подозреваю, что это действительно нужно намного выше, если приложение было разрешено работать дольше.

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