Java процесс поднимает намного больше, чем -Xmx, определенный без OutOfMemory - PullRequest
0 голосов
/ 20 апреля 2020

У меня проблема с тем, что мое приложение lucene index работает с -Xmx17G, но после непродолжительного времени запуска процесса поднять более 40G - память машины завершена, и процесс будет уничтожен.

  • Никаких исключений не было.
  • Когда я беру дамп кучи - это только 4G.
  • Когда я анализирую кучу, я не вижу, что может занять больше 40G.

Приложение создает индексные файлы Lucene. Запуск действителен без исключений.

Если у кого-то есть идея:

  • как я могу уловить эту проблему (не jmap, не помощь в анализе кучи, потому что куча имеет действительный размер и размер объектов)
  • Как увидеть, что вынимает из кучи памяти
  • почему jvm не вызывает исключение.

В настоящее время я делаю cron каждые 5 минут, чтобы перезапустить приложение ..

Я думаю что это какая-то люценовая ошибка, но не может доказать это.

-Xmx17000m

top -p 10668
top - 17:56:45 up 22 days, 14:36, 13 users,  load average: 2.68, 2.63, 2.58
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s): 33.9 us, 18.0 sy,  0.0 ni, 48.0 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem : 49294264 total, 19862152 free, 28476600 used,   955512 buff/cache
KiB Swap:  1048572 total,   617848 free,   430724 used. 20393904 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                              
10668 primo     20   0   **41.3g**  26.2g  34468 S 102.7 55.7  13:54.74 java                                 

primo@se0207(p4_1)(sandb):~/p4_1/primom$jstat -gcutil -t 10668 10000      
Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT    CGC    CGCT     GCT   
          436.3   0.00 100.00  33.67  32.01  97.47  92.38    100    3.530     0    0.000     6    0.026    3.556
          446.4   0.00 100.00  95.06  27.85  97.50  92.38    101    3.554     0    0.000     6    0.026    3.580
          456.3   0.00 100.00  21.05  29.85  97.50  92.38    103    3.610     0    0.000     6    0.026    3.636
          466.3   0.00 100.00  10.62  27.89  97.51  92.38    105    3.665     0    0.000     6    0.026    3.690

primo@se0207(p4_1)(sandb):~/p4_1/primom$jstat -gc -t 10668 10000     
Timestamp        S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT    CGC    CGCT     GCT   
          108.1  0.0   28672.0  0.0   28672.0 2613248.0 925696.0 3735552.0   729780.1  44800.0 43736.5 4864.0 4479.0     45    1.999   0      0.000   6      0.026    2.025
          118.1  0.0   53248.0  0.0   53248.0 3436544.0 1753088.0 2887680.0   776473.5  44800.0 43754.3 4864.0 4479.0     48    2.103   0      0.000   6      0.026    2.129
          128.1  0.0   53248.0  0.0   53248.0 3854336.0 1282048.0 2469888.0   647449.5  45056.0 43793.2 4864.0 4480.7     50    2.204   0      0.000   6      0.026    2.230
          138.1  0.0   53248.0  0.0   53248.0 3964928.0 2244608.0 2359296.0   776473.5  45056.0 43881.4 4864.0 4485.8     51    2.246   0      0.000   6      0.026    2.272
         1378.3  0.0   4096.0  0.0   4096.0 499712.0 413696.0  397312.0   310738.5  46592.0 45220.4 4864.0 4488.4    203    5.572   3      1.274   6      0.026    6.871
         1388.3  0.0   8192.0  0.0   8192.0 495616.0 106496.0  397312.0   308706.3  46592.0 45220.4 4864.0 4488.4    204    5.575   3      1.274   6      0.026    6.875
         1398.3  0.0   4096.0  0.0   4096.0 495616.0 45056.0   401408.0   312874.2  46592.0 45220.4 4864.0 4488.4    206    5.647   3      1.274   6      0.026    6.946
         1408.3  0.0   4096.0  0.0   4096.0 495616.0 331776.0  401408.0   312863.9  46592.0 45220.4 4864.0 4488.4    208    5.651   3      1.274   6      0.026    6.950    




jhsdb jmap --heap --pid 10668
Attaching to process ID 10668, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.0.4+11

using thread-local object allocation.
Garbage-First (G1) GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 17825792000 (17000.0MB)
   NewSize                  = 1363144 (1.2999954223632812MB)
   MaxNewSize               = 10695475200 (10200.0MB)
   OldSize                  = 5452592 (5.1999969482421875MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 4194304 (4.0MB)

Heap Usage:
G1 Heap:
   regions  = 4250
   capacity = 17825792000 (17000.0MB)
   used     = 2559615216 (2441.039291381836MB)
   free     = 15266176784 (14558.960708618164MB)
   14.35905465518727% used
G1 Young Generation:
Eden Space:
   regions  = 409
   capacity = 2185232384 (2084.0MB)
   used     = 1715470336 (1636.0MB)
   free     = 469762048 (448.0MB)
   78.50287907869482% used
Survivor Space:
   regions  = 11
   capacity = 46137344 (44.0MB)
   used     = 46137344 (44.0MB)
   free     = 0 (0.0MB)
   100.0% used
G1 Old Generation:
   regions  = 192
   capacity = 1308622848 (1248.0MB)
   used     = 793813232 (757.0392913818359MB)
   free     = 514809616 (490.96070861816406MB)
   60.6601996299548% used
...