java - Tomcat commits abnormal amount of virtal memory and dosen't release it -


issue: java commits big amount of virtual memory , doesn't release it.then server goes down. java(tomcat) consumes normal amount of memory. example real heap 1gb, commited virtaul memory 30g... parametrs old config: min/max heap - 512m/2048m, tread stack size 512kb, perm 64m, max perm 256m

server status now: physical memory:

16383.55 mb available memory: 4917.84 mb total page file: 47103.55 mb free page file: 34961.65 mb memory load: 69 process kernel time: 1701.58 s process user time: 9451.538 s

ps eden space heap memory 129.00 mb 509.50 mb 634.50 mb 467.03 mb (73%) ps old gen heap memory 341.50 mb 1064.00 mb 1365.00 mb 884.52 mb (64%) ps survivor space heap memory 21.00 mb 9.00 mb 9.00 mb 0.00 mb (0%) code cache non-heap memory 2.43 mb 21.75 mb 48.00 mb 21.50 mb (44%) ps perm gen non-heap memory 64.00 mb 178.50 mb 256.00 mb 178.47 mb (69%)

what have:

  • windows server 2012r2,
  • 4vcpus,
  • 16gb of ram (was 2vcpu , 8gb of ram)
  • apache tomcat/7.0.56
  • jvm 1.7.0_72-b14
  • application server dam few sites, less 200 users
  • virtaul memory size defined policy , set managed system (sounds joke has ~45gb...)

what did: trying reconfigure server changing gc settings, agrresive heap, heap sizes etc. without result.

what need: screens, heap dump, gc logs?

thank in advance, waiting suggestions! best regards, db

most internal hotspot data structures assume can work on contiguous amounts of address space, reserve amount in advance. not mean commit memory. ensure no random allocations happen in address ranges.

generally individual regions (heap, metaspace, code cache...) not reserve more maximum specified command line options. can inspect them appending -xx:+printflagsfinal actual configuration.

some of default maximum values calculated based on available physical ram.

if problem - shouldn't unless disabled overcommit in kernel (well, thata's linux-thing anyway) - can use native memory tracking see block reserves , restrict lowering upper bound.

if doesn't show in nmt next candidates native library or direct byte buffers/memory-mapped files somehow aren't released.


Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

c# - Get rid of xmlns attribute when adding node to existing xml -