Newsgroup: it.comp.os.linux.development
Titolo: Java , occupazione di memoria

Salve,
ho sviluppato un piccolo demone multithread in java, prima testandolo in 
ambiente windows NT e per poi metterlo in opera su una RH 6.1 e ho notato 
alcune stranezze nell'occupazione di memoria della JVM in questo 
ambiente.
Con il comando top posso osservare che la jvm subito si divide in diversi 
processi, anche se il demone ancora non ha creato nessun thread, ma 
questo è un comportamento che avevo già osservato in passato, quello che 
non capisco è la dimensione che top mi riporta per ognuno di questi 
processi:
appaiono tutti con la stessa esatta dimensione di circa 7 Mb ma la cosa 
mi sembra impossibile perche' in totale sono 8 processi per cui la somma 
sarebbe 56 Mb che è assolutamente impossibile in quanto 56 Mb piu' tutti 
gli altri processi che ci sono superano abbondantemente la memoria 
disponibile (Swap compresa...). Un mio collega un po' piu' pratico di 
linux ha ipotizzato che la dimensione che top riporta per ognuno dei 
processi in realtà sarebbe la dimensione totale di tutti i processi di 
quella jvm. In questo caso la memoria occupata sarebbe ad un livello 
molto piu' ragionevole pero' in confronto a quanta lo stesso programma ne 
occupa in ambiente Windows è sempre moltissima (circa 1 Mb contro 7).
Da cosa dipende questa differenza ? (ammesso che sia effettivamente 
così..) Qualcuno ha fatto una esperienza simile ?
Ciao a tutti 
Marco 

appaiono tutti con la stessa esatta dimensione di circa 7 Mb ma la cosa
Non sono processi, sono kernel level thread.
...
--
  	Giuseppe "Cowo" Corbelli  -->>  Riding on Linux-2.2.16
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Adding features does not necessarily increase functionality -- it just
		makes the manuals thicker. !>-

 Non sono processi, sono kernel level thread.
Ciao,
grazie per l'interessamento! secondo te comunque è corretta 
l'interprertazione del mio collega circa l'occupazione di memoria totale 
di tutti questi thread ?
Marco

 di tutti questi thread ?
Non so quale sia questa interpretazione, ma un ragionevole modo per stimare
la effettiva occupazione di RAM di questi processo e`:
Siano Xj le dimensioni dei vari thread, ordinate dalla piu` piccola alla
piu` grande, per j variabile da 0 (thread che usa meno memoria) a n-1
(n=numero dei thread)
Memoria usata = X0 + somma (j da 1 a n-1) (Xj-X0)
            (circa)
Questo perche` i thread condividono tutto tranne lo stack, che eccetto in
casi molto particolari non supera qualche kb di dimesnione.
-- 
     /kinkie
Ed ora, qualche parola dai nostri sponsor: 
While it may be true that a watched pot never boils, the one you don't
keep an eye on can make an awful mess of your stove.
		-- Edward Stevenson


wrote in message m3hf2m6...@mika.elet.polimi.it.SPAM.BAD.IS...


processi?
Un thread e' la parte attiva di un processo con il relativo stack. Kernel
level vuol dire che sono creati e gestiti a livello di kernel.
--
  	Giuseppe "Cowo" Corbelli  -->>  Riding on Linux-2.2.16
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Asynchronous inputs are at the root of our race problems. !>-
                 D. Winker and F. Prosser