OOM-killer with Java application on Linux

19,012

Solution 1

So you're leaking memory and would like to know why and where.

A few things you can do

  • use garbage collection logging with all the verbose options
  • use the jdk tools (jmap with the histo option shows you which classes have how many instances alive etc)
  • jkd tools #2 jvisualvm - on of the best free tools around
  • there are free versions of commercial tools like appdynamics lite/ jxinsight opus
  • use -XX:+HeapDumpOnOutOfMemoryError and analyse the heap dump once you get the OOM
  • a code review can't do harm either - most likely you're not letting go of information you don't need any more

Solution 2

You probably have a memory leak. I suggest you to use a profiler tool (JProfiler is the best in my opinion) to find it. If your server doesn't have GUI you can set up the profiler remotely and use an agent on the Linux machine.

Solution 3

Too late a response. 500 is too less but why not use Xms and Xmx settings for Java? That way you don't leave the System Kernel to decide what to do.

Share:
19,012
djo
Author by

djo

Updated on June 13, 2022

Comments

  • djo
    djo about 2 years

    I have a problem with my Java application on a Linux system (version 2.6.39.2) with 500MB RAM. Every hour my application takes 1-2MB resident memory more. The application starts with 40MB of resident memory used. After 15 days, OOM-killer kills my application (see attached log).

    More information:

    • I haven’t set any memory limit (no Xms, Xmx, …) for my application.
    • I have made a heap dump when 396MB of resident memory where used but for Memory Analysis tool, I only use 7.8MB of memory and there were no special memory leaks.

    What can I do to found the source of the problem or how to ensure that my application will not be killed?

    Thanks in advance for your help. Best regards.

    EDIT: It is a standalone embedded application without server. The problem occurs on the deployed application on a machine (difficult to install analysis tools) but not on my development PC.


    Jun  7 06:15:41 HMI user.warn kernel: java invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
    Jun  7 06:15:42 HMI user.warn kernel: Pid: 650, comm: java Not tainted 2.6.39.2 #7
    Jun  7 06:15:42 HMI user.warn kernel: Call Trace:
    Jun  7 06:15:42 HMI user.warn kernel:  [<c144c264>] ? printk+0xf/0x11
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1074eb8>] dump_header.clone.8+0x58/0x150
    Jun  7 06:15:42 HMI user.warn kernel:  [<c11dd008>] ? ___ratelimit+0x78/0xf0
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1075121>] oom_kill_process.clone.11+0x41/0x220
    Jun  7 06:15:42 HMI user.warn kernel:  [<c10376e8>] ? has_capability_noaudit+0x18/0x30
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1074fd5>] ? oom_badness+0x25/0x130
    Jun  7 06:15:42 HMI user.warn kernel:  [<c10755ef>] out_of_memory+0x1bf/0x2a0
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1078b4a>] __alloc_pages_nodemask+0x5aa/0x5c0
    Jun  7 06:15:42 HMI user.warn kernel:  [<c107a1cb>] __do_page_cache_readahead+0xdb/0x200
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1072b00>] ? wait_on_page_bit+0x90/0xa0
    Jun  7 06:15:42 HMI user.warn kernel:  [<c107a539>] ra_submit+0x19/0x20
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1074762>] filemap_fault+0x3d2/0x3e0
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1086de9>] __do_fault+0x39/0x3a0
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1074390>] ? __lock_page_or_retry+0x50/0x50
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1089540>] handle_pte_fault+0x70/0x5b0
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1089b0f>] handle_mm_fault+0x8f/0x100
    Jun  7 06:15:42 HMI user.warn kernel:  [<c101ff00>] do_page_fault+0x100/0x3d0
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1053e0a>] ? sys_futex+0x5a/0x100
    Jun  7 06:15:42 HMI user.warn kernel:  [<c101fe00>] ? vmalloc_sync_all+0x110/0x110
    Jun  7 06:15:42 HMI user.warn kernel:  [<c144ed1a>] error_code+0x5a/0x60
    Jun  7 06:15:42 HMI user.warn kernel:  [<c1440000>] ? vsc_sata_init_one+0x1f6/0x278
    Jun  7 06:15:42 HMI user.warn kernel:  [<c101fe00>] ? vmalloc_sync_all+0x110/0x110
    Jun  7 06:15:42 HMI user.warn kernel: Mem-Info:
    Jun  7 06:15:42 HMI user.warn kernel: DMA per-cpu:
    Jun  7 06:15:42 HMI user.warn kernel: CPU    0: hi:    0, btch:   1 usd:   0
    Jun  7 06:15:42 HMI user.warn kernel: Normal per-cpu:
    Jun  7 06:15:42 HMI user.warn kernel: CPU    0: hi:  186, btch:  31 usd:  52
    Jun  7 06:15:42 HMI user.warn kernel: active_anon:111882 inactive_anon:51 isolated_anon:0
    Jun  7 06:15:42 HMI user.warn kernel:  active_file:70 inactive_file:853 isolated_file:0
    Jun  7 06:15:42 HMI user.warn kernel:  unevictable:0 dirty:0 writeback:0 unstable:0
    Jun  7 06:15:42 HMI user.warn kernel:  free:1183 slab_reclaimable:307 slab_unreclaimable:1016
    Jun  7 06:15:42 HMI user.warn kernel:  mapped:149 shmem:122 pagetables:302 bounce:0
    Jun  7 06:15:42 HMI user.warn kernel: DMA free:2028kB min:88kB low:108kB high:132kB active_anon:13696kB inactive_anon:0kB active_file:0kB inactive_file:72kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15800kB mlocked:0kB dirty:0kB writeback:0kB ma
    Jun  7 06:15:42 HMI user.warn kernel: lowmem_reserve[]: 0 483 483 483
    Jun  7 06:15:42 HMI user.warn kernel: Normal free:2704kB min:2768kB low:3460kB high:4152kB active_anon:433832kB inactive_anon:204kB active_file:280kB inactive_file:3340kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:495488kB mlocked:0kB dirty:0kB w
    Jun  7 06:15:42 HMI user.warn kernel: lowmem_reserve[]: 0 0 0 0
    Jun  7 06:15:42 HMI user.warn kernel: DMA: 393*4kB 7*8kB 3*16kB 1*32kB 1*64kB 2*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2028kB
    Jun  7 06:15:42 HMI user.warn kernel: Normal: 676*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2704kB
    Jun  7 06:15:42 HMI user.warn kernel: 1057 total pagecache pages
    Jun  7 06:15:42 HMI user.warn kernel: 0 pages in swap cache
    Jun  7 06:15:42 HMI user.warn kernel: Swap cache stats: add 0, delete 0, find 0/0
    Jun  7 06:15:42 HMI user.warn kernel: Free swap  = 0kB
    Jun  7 06:15:42 HMI user.warn kernel: Total swap = 0kB
    Jun  7 06:15:42 HMI user.warn kernel: 128928 pages RAM
    Jun  7 06:15:42 HMI user.warn kernel: 0 pages HighMem
    Jun  7 06:15:42 HMI user.warn kernel: 2847 pages reserved
    Jun  7 06:15:42 HMI user.warn kernel: 476 pages shared
    Jun  7 06:15:42 HMI user.warn kernel: 124258 pages non-shared
    Jun  7 06:15:42 HMI user.info kernel: [ pid ]   uid  tgid total_vm      rss cpu oom_adj oom_score_adj name
    Jun  7 06:15:42 HMI user.info kernel: [   78]     0    78      535       77   0     -17         -1000 udevd
    Jun  7 06:15:42 HMI user.info kernel: [  314]     0   314      422       17   0       0             0 zeroconf
    Jun  7 06:15:42 HMI user.info kernel: [  320]     1   320      420       17   0       0             0 portmap
    Jun  7 06:15:42 HMI user.info kernel: [  349]     0   349      618       22   0       0             0 rc
    Jun  7 06:15:42 HMI user.info kernel: [  358]    42   358      585       38   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  362]    44   362     3139      184   0       0             0 hald
    Jun  7 06:15:42 HMI user.info kernel: [  363]     0   363      805       45   0       0             0 hald-runner
    Jun  7 06:15:42 HMI user.info kernel: [  374]     0   374      821       32   0       0             0 hald-addon-inpu
    Jun  7 06:15:42 HMI user.info kernel: [  386]    44   386      767       35   0       0             0 hald-addon-acpi
    Jun  7 06:15:42 HMI user.info kernel: [  401]     0   401      531       23   0       0             0 dropbear
    Jun  7 06:15:42 HMI user.info kernel: [  406]     0   406      425       22   0       0             0 acpid
    Jun  7 06:15:42 HMI user.info kernel: [  411]     0   411      617       16   0       0             0 syslogd
    Jun  7 06:15:42 HMI user.info kernel: [  413]     0   413      617       18   0       0             0 klogd
    Jun  7 06:15:42 HMI user.info kernel: [  422]    46   422      666       48   0       0             0 avahi-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  423]    46   423      666       42   0       0             0 avahi-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  431]     0   431      886       18   0       0             0 pure-ftpd
    Jun  7 06:15:42 HMI user.info kernel: [  442]     0   442      618       16   0       0             0 S97x11Dm
    Jun  7 06:15:42 HMI user.info kernel: [  443]     0   443      741       26   0       0             0 xinit
    Jun  7 06:15:42 HMI user.info kernel: [  445]     0   445     7850     4035   0       0             0 X
    Jun  7 06:15:42 HMI user.info kernel: [  452]     0   452      617       15   0       0             0 sh
    Jun  7 06:15:42 HMI user.info kernel: [  453]     0   453     2008      226   0       0             0 matchbox-window
    Jun  7 06:15:42 HMI user.info kernel: [  454]     0   454     2001      725   0       0             0 matchbox-deskto
    Jun  7 06:15:42 HMI user.info kernel: [  455]     0   455     1479      183   0       0             0 matchbox-panel
    Jun  7 06:15:42 HMI user.info kernel: [  472]     0   472      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  474]     0   474   154396   104395   0       0             0 java
    Jun  7 06:15:42 HMI user.info kernel: [  479]     0   479      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  484]     0   484      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  489]     0   489      585       36   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  496]     0   496      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  504]     0   504      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  509]     0   509      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  514]     0   514      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  519]     0   519      585       36   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  524]     0   524      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  529]     0   529      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  535]     0   535      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  540]     0   540      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  546]     0   546      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  552]     0   552      585       36   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  557]     0   557      585       36   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  562]     0   562      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  567]     0   567      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  572]     0   572      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  577]     0   577      585       36   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  582]     0   582      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  587]     0   587      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  592]     0   592      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  597]     0   597      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  602]     0   602      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  610]     0   610      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  616]     0   616      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  621]     0   621      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  626]     0   626      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  631]     0   631      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  636]     0   636      585       35   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  641]     0   641      585       34   0       0             0 dbus-daemon
    Jun  7 06:15:42 HMI user.info kernel: [  642]     0   642     1407      155   0       0             0 mb-applet-menu-
    Jun  7 06:15:42 HMI user.info kernel: [  649]     0   649     1397      139   0       0             0 mb-applet-clock
    Jun  7 06:15:42 HMI user.info kernel: [  837]     0   837      530       77   0     -17         -1000 udevd
    Jun  7 06:15:42 HMI user.info kernel: [  838]     0   838      532       78   0     -17         -1000 udevd
    Jun  7 06:15:42 HMI user.err kernel: Out of memory: Kill process 474 (java) score 798 or sacrifice child
    Jun  7 06:15:42 HMI user.err kernel: Killed process 474 (java) total-vm:617584kB, anon-rss:417580kB, file-rss:0kB
    

  • djo
    djo about 12 years
    It is a standalone embedded application without server. The problem occurs on the deployed application on a machine (difficult to install analysis tools) but not on my development PC.
  • mihaisimi
    mihaisimi about 12 years
    It is fairly easy to install the agent and profile a remote application (this is how I am using it), see here:playground.teerapap.net/2010/06/…
  • djo
    djo about 12 years
    But according to this comment:I have made a heap dump when 396MB of resident memory where used but for Memory Analysis tool, I only use 7.8MB of memory and there were no special memory leaks.I haven't any memory leaks no?
  • mihaisimi
    mihaisimi about 12 years
    You are running out of memory, I think this is a clear indication of a memory leak as it can be. I am sure it will help if you can see the dynamic snapshot.
  • djo
    djo about 12 years
    Ok I will try this tool this week. Thank you for your help. As soon as possible I will feedback my tests.
  • djo
    djo about 12 years
    Thank you for your help. I will try your various proposals this week. As soon as possible I will feedback my tests.
  • djo
    djo almost 12 years
    We found the source of the problem by performing a series of tests. The cause was the technique used for image generation.
  • djo
    djo almost 12 years
    We found the source of the problem by performing a series of tests. The cause was the technique used for image generation.
  • moodywoody
    moodywoody almost 12 years
    How did you find the problem?
  • djo
    djo almost 12 years
    We found by chance on which page the problem occurred and have simply targeted by several tests the portion of code that was the problem.
  • Janaka Bandara
    Janaka Bandara over 3 years
    This could have been the actual cause in fact - IIRC Java picks/assumes a 1G heap by default (when unspecified) so OP's java process would have kept gulping up memory - without seeing a reason to run a GC - until the whole 500M system memory was consumed