Bonjour,

on essaie de réduire la consommation mémoire d'un process java sur une machine en ajustant différent paramètre. La situation actuelle est la suivante:

commande java lancée par jboss, rapportée par la commande ps:
Code x : Sélectionner tout - Visualiser dans une fenêtre à part
/web/intraweb/apps/java/jdk7/bin/java -Dprogram.name=run.sh -server -Djboss.bind.address=0.0.0.0 -Xms256m -Xmx1024m -XX:MaxPermSize=384m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Xms256m -Xmx1024m -XX:MaxPermSize=384m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djira.jelly.on=true -Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl -Duser.timezone=Europe/Brussels -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/web/intraweb/apps/jboss//lib/endorsed -classpath /web/intraweb/apps/jboss//bin/run.jar:/web/intraweb/apps/java/jdk7/lib/tools.jar org.jboss.Main -c default
On y constate donc: une Heap entre 256 et 1024M, un max permgen de 384M. L'un dans l'autre, à pleine charge, le process devrait occuper dans les 1.4G sur la machine.

Si nous allons sur la console jboss faire un état de la mémoire, nous avons:
Code x : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Total Memory Pools: 5

    Pool: Code Cache (Non-heap memory)

        Peak Usage : init:2555904, used:29118016, committed:29491200, max:50331648
        Current Usage : init:2555904, used:29052352, committed:29491200, max:50331648


            |----------------------------------------| committed:28,12Mb
            +---------------------------------------------------------------------+
            |////////////////////////////////////////| | max:48Mb
            +---------------------------------------------------------------------+
            |---------------------------------------| used:27,71Mb


    Pool: PS Eden Space (Heap memory)

        Peak Usage : init:67174400, used:341901312, committed:341901312, max:344522752
        Current Usage : init:67174400, used:274997776, committed:341901312, max:343736320


            |--------------------------------------------------------------------| committed:326,06Mb
            +---------------------------------------------------------------------+
            |//////////////////////////////////////////////////////// || max:327,81Mb
            +---------------------------------------------------------------------+
            |-------------------------------------------------------| used:262,26Mb


    Pool: PS Survivor Space (Heap memory)

        Peak Usage : init:11141120, used:99614240, committed:119275520, max:119275520
        Current Usage : init:11141120, used:0, committed:7208960, max:7208960


            |---------------------------------------------------------------------| committed:6,88Mb
            +---------------------------------------------------------------------+
            | | max:6,88Mb
            +---------------------------------------------------------------------+
            | used:0b


    Pool: PS Old Gen (Heap memory)

        Peak Usage : init:178978816, used:715849720, committed:715849728, max:715849728
        Current Usage : init:178978816, used:715845720, committed:715849728, max:715849728


            |---------------------------------------------------------------------| committed:682,69Mb
            +---------------------------------------------------------------------+
            |/////////////////////////////////////////////////////////////////////| max:682,69Mb
            +---------------------------------------------------------------------+
            |--------------------------------------------------------------------| used:682,68Mb


    Pool: PS Perm Gen (Non-heap memory)

        Peak Usage : init:21757952, used:211419768, committed:212074496, max:402653184
        Current Usage : init:21757952, used:211413296, committed:211484672, max:402653184


            |-----------------------------------| committed:201,69Mb
            +---------------------------------------------------------------------+
            |///////////////////////////////////| | max:384Mb
            +---------------------------------------------------------------------+
            |-----------------------------------| used:201,62Mb

En résumé, java devrait utiliser ~1260M d'après ce rapport.

Nous avons 142 threads en cours, avec une allocation par défaut de 1M / thread pour la stack (cf docs google), nous arrivons à 1.4G réels.

Quand nous faisons un top sur le serveur, nous obtenons:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 6417 *****  20   0 4490m 2.0g  11m S 281.6 26.4   1074:49 java
Donc une consommation réelle entre 2G et 4G suivant le paramètre pris en compte

Quelqu'un a une idée d'où viennent ces 600M de consommation supplémentaire???

Je rajoute un status du process pour plus de détails
Code x : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$ cat /proc/6417/status
Name:   java
State:  S (sleeping)
Tgid:   6417
Pid:    6417
PPid:   6391
TracerPid:      0
Uid:    2290    2290    2290    2290
Gid:    211     211     211     211
Utrace: 0
FDSize: 2048
Groups: 211 227 230 234
VmPeak:  4639676 kB
VmSize:  4598608 kB
VmLck:         0 kB
VmHWM:   2131132 kB
VmRSS:   2128000 kB
VmData:  4423764 kB
VmStk:        88 kB
VmExe:         4 kB
VmLib:     15036 kB
VmPTE:      5008 kB
VmSwap:    30680 kB
Threads:        152
SigQ:   0/62831
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000002
SigCgt: 2000000181005ccd
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed:   f
Cpus_allowed_list:      0-3
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        1
nonvoluntary_ctxt_switches:     4