View previous topic :: View next topic |
Author |
Message |
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Wed Jun 18, 2008 10:13 am Post subject: |
|
|
Neuromancien wrote: | Contrairement à ce que dit geekounet le problème ne vient pas du swap... Aucun doc sur l'installation de Icedtea ne parle de problème de mémoire... |
Problème d'espace disque dans /var ptet? (quoique l'erreur parle ne tas alors ça peut pas vraiment être ça.) Ton système est à jour? T'as essayé les deux versions de java majeures pour compiler icedtea (utilises java-config pour passer de l'un à l'autre): 5 et 6? _________________ membre officieux du SAV Ati GEntoo |
|
Back to top |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Wed Jun 18, 2008 10:15 am Post subject: |
|
|
Bio wrote: | geekounet wrote: | Neuromancien wrote: | geekounet wrote: | Aller un petit effort :
Code: | Exception in thread "main" java.lang.OutOfMemoryError: Java heap space |
C'est tout de même explicite... |
Pas pour moi, je ne sais pas quoi faire avec ça. Je laisse tomber Icedtea, je vais essayer de trouver une autre solution... Je commence à regretter d'avoir choisi l'amd64, c'est beaucoup d'ennuis pour pas grand chose. |
Out of memory, un gamin de 10 ans te dirait que ça a un rapport avec la mémoire, un gamin de 12 ans te le traduit par « manque de mémoire ». Heureusement qu'ya des cours d'anglais à l'école pour le minimum vital hein. Et depuis 4 ans que t'utilises Gentoo, tu trouves pas que tu te fous un peu de notre gueule en ne sachant pas interprêter un truc aussi trivial et classique ?
Bref, tu manques de ram pour le compiler, et ça pourrait se régler en augmentant ta swap, bien que ça ramerai, ça compilera. |
Je ne voudrais pas m'immiscer dans cette petite flame-war mais en tant qu'utilisateur Java je me devais de réagir. En augmentant la RAM ou la swap ça ne résoudra pas le problème. En effet la machine virtuelle Java adresse un certain espace mémoire de la machine physique (le heap size). Les applications Java peuvent ensuite accéder à ce heap géré par la VM. L'exception OutOfMemory se produit quand l'application a besoin de plus de mémoire que la VM n'en a adressée.
Dans ce cas 2 solutions s'offrent à vous : augmenter la heap size via l'option -Xmx comme indiqué précédemment, par exemple
Code: | java -Xmx1024m MaClasse |
ou alors modifier l'application Java pour qu'elle soit moins gourmande (pas toujours possible). On préférera, la plupart des cas, augmenter le heap size.
Heap size et mémoire physique sont 2 choses complétement distinctes. Si vous avez un système avec 500M de RAM dispo et que vous avez une VM qui adresse 1G de mémoire ça va fonctionner. Evidemment vous allez swapper et donc obtenir des perf médiocres. In fine c'est toujours l'OS qui reste responsable de l'allocation mémoire et quand il n'en a plus de dispo il swap.
Par contre, dans le cas d'un système avec 4G de RAM et une VM adressant 1G, si votre appli Java à besoin de 1.5G vous allez obtenir l'exception java.lang.OutOfMemory |
Et comment t'expliquerais que la VM en allouerai moins chez lui que chez les autres ? Alors que la compilation se passe exactement pareil chez tout le monde, même ebuild, mêmes sources, et le binaire Java produit est indépendant de la machine. |
|
Back to top |
|
|
Neuromancien l33t
Joined: 03 Dec 2003 Posts: 867
|
Posted: Wed Jun 18, 2008 10:23 am Post subject: |
|
|
geekounet wrote: | Bio wrote: | Heap size et mémoire physique sont 2 choses complétement distinctes. Si vous avez un système avec 500M de RAM dispo et que vous avez une VM qui adresse 1G de mémoire ça va fonctionner. Evidemment vous allez swapper et donc obtenir des perf médiocres. In fine c'est toujours l'OS qui reste responsable de l'allocation mémoire et quand il n'en a plus de dispo il swap.
Par contre, dans le cas d'un système avec 4G de RAM et une VM adressant 1G, si votre appli Java à besoin de 1.5G vous allez obtenir l'exception java.lang.OutOfMemory |
Et comment t'expliquerais que la VM en allouerai moins chez lui que chez les autres ? Alors que la compilation se passe exactement pareil chez tout le monde, même ebuild, mêmes sources, et le binaire Java produit est indépendant de la machine. |
En tous cas, en augmentant simplement le swap ça ne fonctionne pas. _________________ emerge --info
dmesg
lspci
.config |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Wed Jun 18, 2008 10:54 am Post subject: |
|
|
On t'a proposé une commande pour augmenter la taille du tas alloué par la machine virtuelle java. Tu l'as essayé ? |
|
Back to top |
|
|
Neuromancien l33t
Joined: 03 Dec 2003 Posts: 867
|
Posted: Wed Jun 18, 2008 11:36 am Post subject: |
|
|
kopp wrote: | On t'a proposé une commande pour augmenter la taille du tas alloué par la machine virtuelle java. Tu l'as essayé ? |
Je dois peut-être crier pour me faire comprendre... C'EST UNE OPTION DE JAVA EN LIGNE COMMANDE. COMMENT JE PASSE CETTE OPTION DANS LE CAS D'UNE COMPILATION AVEC EMERGE ??? Faut-il modifier l'ebuild ou une variable d'environnement Java ? _________________ emerge --info
dmesg
lspci
.config |
|
Back to top |
|
|
Zazbar Apprentice
Joined: 26 Jul 2005 Posts: 279 Location: Paris Time
|
Posted: Wed Jun 18, 2008 11:49 am Post subject: |
|
|
essayes peut etre avec un alias
Code: | alias java=`/path/to/java -Xmx512m` |
Ca devait fonctionner ..
et en effet, ton problème vient du heap Size qui n'est pas bien calibré (par défaut je crois que ca fait 2Megs .... a confirmer) ...
Mes 0,02 cents _________________ Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et montrer qu'on l'est. -- P. Dac - Pensées |
|
Back to top |
|
|
Neuromancien l33t
Joined: 03 Dec 2003 Posts: 867
|
Posted: Wed Jun 18, 2008 12:16 pm Post subject: |
|
|
Zazbar wrote: | essayes peut etre avec un alias
Code: | alias java=`/path/to/java -Xmx512m` |
Ca devait fonctionner ..
et en effet, ton problème vient du heap Size qui n'est pas bien calibré (par défaut je crois que ca fait 2Megs .... a confirmer) ...
|
OK je vais essayer ça... _________________ emerge --info
dmesg
lspci
.config |
|
Back to top |
|
|
Bio Apprentice
Joined: 17 Mar 2003 Posts: 197 Location: Geneva which should be in Switzerland...
|
Posted: Wed Jun 18, 2008 1:36 pm Post subject: |
|
|
geekounet wrote: | Et comment t'expliquerais que la VM en allouerai moins chez lui que chez les autres ? Alors que la compilation se passe exactement pareil chez tout le monde, même ebuild, mêmes sources, et le binaire Java produit est indépendant de la machine. |
Il y a forcément quelque chose de différent, de là à trouver quoi... JRE? ebuild? arch? paramètrage... _________________ I'm all in ! |
|
Back to top |
|
|
Zazbar Apprentice
Joined: 26 Jul 2005 Posts: 279 Location: Paris Time
|
Posted: Wed Jun 18, 2008 2:10 pm Post subject: |
|
|
Pour répondre a moi-même la taille par défaut est de 64 megs (java 1.5) et elle etait de 2 megs avec la 1.3.
man java wrote: |
-Xmxn Specifies the maximum size, in bytes, of the memory allocation
pool. This value must be a multiple of 1024 greater than 2 MB.
Append the letter k or K to indicate kilobytes or the letter m
or M to indicate megabytes. The default value is 64MB. Examples:
-Xmx83886080
-Xmx81920k
-Xmx80m
|
Donc il faudrait que tu mettes plus de 64 megs (avec 512 tu devrais plus avoir de prob d'espace quand meme ...) _________________ Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et montrer qu'on l'est. -- P. Dac - Pensées |
|
Back to top |
|
|
Neuromancien l33t
Joined: 03 Dec 2003 Posts: 867
|
Posted: Wed Jun 18, 2008 8:21 pm Post subject: |
|
|
Zazbar wrote: | essayes peut etre avec un alias
Code: | alias java=`/path/to/java -Xmx512m` |
|
L'alias ne fonctionne pas. En effet, la compilation est lancée par /var/tmp/portage/dev-java/icedtea-6.1.2/work/icedtea6-1.2/bootstrap/jdk1.6.0/bin/java qui est un lien vers /user/bin/java, qui lui-même est un lien vers la JVM de Sun (1.6.0_06). Je cherche donc un autre moyen de modifier cette option.
Quand je compile, à l'écran je vois : Code: | if ! test -d /var/tmp/portage/dev-java/icedtea-6.1.2/work/icedtea6-1.2/bootstrap/jdk1.6.0 ; \
then \
/usr/bin/ecj-3.3 -nowarn -J-Xmx512m -g -d lib/hotspot-tools \
-source 1.5 \
-sourcepath rt:hotspot-tools:openjdk/jdk/src/share/classes:openjdk/jdk/src/solaris/classes:openjdk/langtools/src/share/classes:openjdk/jaxp/src/share/classes:openjdk/corba/src/share/classes:openjdk/jaxws/src/share/classes:generated \
-bootclasspath '' @hotspot-tools-source-files.txt ; \
else \
/var/tmp/portage/dev-java/icedtea-6.1.2/work/icedtea6-1.2/bootstrap/jdk1.6.0/bin/javac -J-Xmx512m -g -d lib/hotspot-tools \
-source 1.5 \
-sourcepath rt:hotspot-tools:openjdk/jdk/src/share/classes:openjdk/jdk/src/solaris/classes:openjdk/langtools/src/share/classes:openjdk/jaxp/src/share/classes:openjdk/corba/src/share/classes:openjdk/jaxws/src/share/classes:generated \
-bootclasspath '' @hotspot-tools-source-files.txt ; \
fi |
Cela ne signifie-t-elle pas que l'option Xmx512m est déjà activée ? _________________ emerge --info
dmesg
lspci
.config |
|
Back to top |
|
|
rhaamo n00b
Joined: 20 Sep 2007 Posts: 17
|
Posted: Wed Jun 18, 2008 9:51 pm Post subject: |
|
|
J'apporte mon petit grain de sel vu que moi aussi j'ai le même problème :/
L'alias ne fais rien aussi, et j'ai aussi le out of memory ^^
/me pense que java est hanté |
|
Back to top |
|
|
Zazbar Apprentice
Joined: 26 Jul 2005 Posts: 279 Location: Paris Time
|
Posted: Thu Jun 19, 2008 7:55 am Post subject: |
|
|
Neuromancien wrote: | Cela ne signifie-t-elle pas que l'option Xmx512m est déjà activée ? |
Apparement si ...
Au vu du bout de log que tu nous a filé .. apparement le compilateur utilisé est soit ecj soit javac (du jdk) .... tu es sur que c'est javac qui est appelé dans ton cas ?
Sinon il y aussi apparement la possibilité de le compiler avec ecj (le compilateur d'eclipse) ... ca serait peut etre à essayer ... _________________ Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et montrer qu'on l'est. -- P. Dac - Pensées |
|
Back to top |
|
|
r4ph431 n00b
Joined: 20 Nov 2007 Posts: 5
|
Posted: Tue Jun 24, 2008 12:06 pm Post subject: |
|
|
Bonjour,
j'ai le même problème (512mo de ram et 1go de swap sur amd64)
Alors j'ai tenté de profiter de la présence de "bootstrap_fix-heapsize.diff" pour y placer MEMORY_LIMIT à :
-J-Xmx256m
-J-Xmx384m
-J-Xmx1024m
L'option est prise en compte, mais aucune de ces valeurs n'évite ce "heap space" error.
free -m
Code: | total used free shared buffers cached
Mem: 496 483 13 0 11 233
-/+ buffers/cache: 238 258
Swap: 1027 0 1027
|
df -h|grep var
Code: | /dev/hda8 2,6G 1,8G 861M 68% /var/tmp |
cat /etc/make.conf|grep CCAC
java-config -v
Code: | java version "1.6.0_06" |
Si quelqu'un dispose d'un petit indice salvateur |
|
Back to top |
|
|
Zazbar Apprentice
Joined: 26 Jul 2005 Posts: 279 Location: Paris Time
|
Posted: Tue Jun 24, 2008 12:55 pm Post subject: |
|
|
Il y a deux autres options qui permettent de configurer la taille de mémoier allouée a java ... essayes celles-ci aussi :
Code: | Setting the new generation heap size
-XX:NewSize
Use this option to set the New generation Java heap size. Set this value to a multiple of 1024 that is greater than 1MB. As a general rule, set -XX:NewSize to be one-fourth the size of the maximum heap size. Increase the value of this option for larger numbers of short-lived objects.
Be sure to increase the New generation as you increase the number of processors. Memory allocation can be parallel, but garbage collection is not parallel.
Setting the maximum New generation heap size
-XX:MaxNewSize
Use this option to set the maximum New generation Java heap size. Set this value to a multiple of 1024 that is greater than 1MB. |
Tu peux rajouter ces options lors de l'appel à java dans l'ebuild voir si ca fonctionne mieux (en mettant des valeurs assez hautes si tu as de la ram ) .. ca te donnerait un truc du genre :
Code: |
java -XX:NewSize=256m -XX:MaxNewSize=256m -Xmx .................
|
_________________ Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et montrer qu'on l'est. -- P. Dac - Pensées |
|
Back to top |
|
|
CryoGen Veteran
Joined: 11 Feb 2004 Posts: 1426 Location: Bamako - Mali - Afrique
|
Posted: Tue Jun 24, 2008 7:56 pm Post subject: |
|
|
Hum vu ici : https://forums.gentoo.org/viewtopic-p-5065787.html#5065787
Quote: | ok, there was some makefile code for java heap sizing. hardwired '-J-Xmx512m' for now.
edit dev-java/icedtea/files/bootstrap_fix-heapsize-so-we-get-happy-please-thanks.diff to increase it if it still fails with 512m.
though, 512m should suffice. |
_________________ - CryoGen` on #gentoofr@irc.freenode.net
- ~amd64 / KDE4
- I'm the bone of my sword... |
|
Back to top |
|
|
r4ph431 n00b
Joined: 20 Nov 2007 Posts: 5
|
Posted: Thu Jun 26, 2008 10:30 am Post subject: |
|
|
Sur vos conseils... (j'ai d'ailleurs trouvé une option du nom de MaxHeapSize qui me semble correspondre à merveille)
cependant, après avoir testé différentes valeurs (sachant que MaxNewSize = 4 * NewSize) et :
Code: | swapon -s
Filename Type Size Used Priority
/dev/hda1 partition 1052248 313956 -1 |
Code: | cd '/var/tmp/portage/dev-java/icedtea-6.1.2/work/icedtea6-1.2' &&
/var/tmp/portage/dev-java/icedtea-6.1.2/work/icedtea6-1.2/bootstrap/jdk1.6.0/bin/javac -J-XX:NewSize=256m -J-XX:MaxNewSize=1024m -J-Xmx1024m -J-XX:MaxHeapSize=1024m -g -d lib/hotspot-tools -source 1.5 -sourcepath rt:hotspot-tools:openjdk/jdk/src/share/classes:openjdk/jdk/src/solaris/classes:openjdk/langtools/src/share/classes:openjdk/jaxp/src/share/classes:openjdk/corba/src/share/classes:openjdk/jaxws/src/share/classes:generated -bootclasspath '' @hotspot-tools-source-files.txt ||
/var/tmp/portage/dev-java/icedtea-6.1.2/work/icedtea6-1.2/bootstrap/jdk1.6.0/bin/javac -J-XX:NewSize=64m -J-XX:MaxNewSize=256m -J-Xmx256m -J-XX:MaxHeapSize=256m -g -d lib/hotspot-tools -source 1.5 -sourcepath rt:hotspot-tools:openjdk/jdk/src/share/classes:openjdk/jdk/src/solaris/classes:openjdk/langtools/src/share/classes:openjdk/jaxp/src/share/classes:openjdk/corba/src/share/classes:openjdk/jaxws/src/share/classes:generated -bootclasspath '' @hotspot-tools-source-files.txt
|
Exception in thread "main" java.lang.OutOfMemoryError : Java heap space ... rien n'y fait.
A noter qu'en observant avec top, je ne vois pas vraiment d'utilisation fondamentalement différente de ma mémoire (j'ai testé à tout hasard sans -J (bien que l'appel à javac le nécessite pour passer les param correctement à java) mais pas de résultat probant...
ex avec -J-XX:NewSize=64m :
Code: | vir res shr S %cpu %mem time command
436m 174m 8216 S 162 35.0 0:22.70 java |
ex avec -XX:NewSize=64m :
Code: | vir res shr S %cpu %mem time command
363m 155m 8220 S 166 31.4 0:38.52 java |
J'espère mes interrogations légitimes mais espèrant plus encore pouvoir les résoudre |
|
Back to top |
|
|
|