Se connecter / S'enregistrer
Votre question

JExcelApi: java.lang.OutOfMemoryError: Java heap space

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
8 Mars 2007 09:55:59

Bonjour à tous,

je programme une application qui demande la manipulation de fichiers Excel assez gros.
Pour ce faire, j'utilise l'API JExcelAPI.

Mon problème est le suivant: certaines pages peuvent contenir 50000 lignes, et ma méthode Workbook.getSheet(), je pense incontournable, me sort une exception
< Exception in thread "main" java.lang.OutOfMemoryError: Java heap space >.

La méthode getSheet(int) charge en mémoire la page sur laquelle je veux travailler, et je ne vois pas de moyen permettant de ne charger qu'une partie de la page.

J'ai essayé d'augmenter la mémoire virtuelle de ma JVM mais le problème subsiste.

Avez-vous une idée?

Merci beaucoup d'avance

Autres pages sur : jexcelapi java lang outofmemoryerror java heap space

10 Mars 2007 19:06:25

up pleazzzzz
personne n'a une idée à me proposer?

Merci!
a b L Programmation
10 Mars 2007 22:31:02

Tu as mis la mémoire à combien ?

ps: j'ai déjà vu le composant excel crashé dans une appli, alors, faut pas s'attendre à des miracles avec ce machin :D 
Contenus similaires
11 Mars 2007 10:46:57

J'ai essayé un peu tout, le max possible, j'ai aussi essayé de changer le nbr de Mo dont la jvm incrémente sa mémoire quand elle en manque. C'est par défaut à 1Mo, j'ai essayé plus et moins.

Mais j'ai l'impression que ma config n'est pas prise en compte quand je lance eclipse en ligne de commande (avec les arguments eclipse -vmargs -Xmx512 par exemple). Encore moins depuis que j'ai installé un autre eclipse, dans un répertoire et un workspace séparés (celui-la sert pour les applis web). Depuis, je n'arrive même plus à lancer eclipse en ligne de commande avec des arguments (ca m'affiche juste l'image de chargement et ça s'arrête), juste un eclipse.exe tout simple.

En ce moment j'ai donc la mémoire à 256Mo et je n'arrive pas à changer la valeur.

Je fais un copier-coller de la config:

*** System properties:
awt.toolkit=sun.awt.windows.WToolkit
eclipse.buildId=M20060921-0945
eclipse.commands=-os
win32
-ws
win32
-arch
x86
-launcher
D:\Program Files\Eclipse\eclipse.exe
-name
Eclipse
-showsplash
600
-exitdata
b1c_790
-vm
D:\Program Files\Java\jdk1.5.0_10\bin\javaw.exe
eclipse.ee.install.verify=false
eclipse.product=org.eclipse.sdk.ide
eclipse.startTime=1173605826796
eclipse.vm=D:\Program Files\Java\jdk1.5.0_10\bin\javaw.exe
eclipse.vmargs=-Xms40m
-Xmx256m
-jar
D:\Program Files\Eclipse\startup.jar
eof=eof
file.encoding=Cp1252
file.encoding.pkg=sun.io
file.separator=\
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.awt.printerjob=sun.awt.windows.WPrinterJob
java.class.path=D:\Program Files\Eclipse\startup.jar
java.class.version=49.0
java.endorsed.dirs=D:\Program Files\Java\jdk1.5.0_10\jre\lib\endorsed
java.ext.dirs=D:\Program Files\Java\jdk1.5.0_10\jre\lib\ext
java.home=D:\Program Files\Java\jdk1.5.0_10\jre
java.io.tmpdir=D:\DOCUME~1\PADMIN\LOCALS~1\Temp\
java.library.path=D:\Program Files\Java\jdk1.5.0_10\bin;.;D:\WINDOWS\system32;D:\WINDOWS;D:\Program Files\Java\jdk1.5.0_10\bin;D:\Oracle\product\10.1.0\Client_3\bin;D:\WINDOWS\system32;D:\WINDOWS;D:\WINDOWS\System32\Wbem;D:\Program Files\Eclipse;d:\Program Files\Microsoft SQL Server\90\Tools\binn\;D:\Program Files\Java\jdk1.5.0_10\bin
java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition
java.runtime.version=1.5.0_10-b03
java.specification.name=Java Platform API Specification
java.specification.vendor=Sun Microsystems Inc.
java.specification.version=1.5
java.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
java.version=1.5.0_10
java.vm.info=mixed mode, sharing
java.vm.name=Java HotSpot(TM) Client VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=Sun Microsystems Inc.
java.vm.version=1.5.0_10-b03
line.separator=

Merci!
a b L Programmation
11 Mars 2007 11:39:57

As-tu essayé de le lancer en ligne de commande javaw sans passer par eclipse (en précisant seulement les paramètres Xmx512m voire Xms512m) ?
Sinon il y a une option qui affiche le taille des classes: -Xaprof
11 Mars 2007 11:45:23

Je viens d'essayer:

javaw -vmargs -Xmx512[m] [-Xms512[m]] -> "Could not create de Java virtual machine

javaw -Xaprof -> rien ne se passe

javaw -vmargs -Xaprof: -> Could not create the Jvm
a b L Programmation
11 Mars 2007 11:59:00

javaw -Xmx512m -Xms512m -jar tonFichier.jar
et juste ça ?
11 Mars 2007 12:08:02

je suis en cours de développement, donc mon projet n'est pas encore archivé en .jar. Est-ce bien de mes sources que tu parles quand tu dis monFichier.jar?

Je peux toujours essayer,mais ça risque d'être assez lourd si je dois archiver à chaque fois que je veux tester l'appli...
a b L Programmation
11 Mars 2007 13:32:37

Oui c'est bien les sources (enfin compilés). mais si tu arrives à l'exécuté c'est que tu l'as compilé.
Si tu n'as que des .class, met la classe qui contient le main:

javaw -Xmx512m -Xms512m tonPackagePersoSIlYEnAUn.MainClass
11 Mars 2007 14:19:05

Voila, j'ai essayé:

javaw -Xmx512m -Xms512m lePathDeMonMain\MainClass.class

-> Could not find the main class. Program will exit.


Merci beaucoup pour ton aide

11 Mars 2007 14:24:24

Joie: j'ai lancé la même commande en remplacant le "javaw" par "eclipse", ça a fonctionné!

Maintenant je vais voir ce que ca donne avec les fichiers excel
11 Mars 2007 14:42:47

-Xmx20000m
-Xms2000m

et j'ai toujours la même erreur :-(

Mais je l'ai plus vite mdr
a b L Programmation
11 Mars 2007 15:45:06

"lePathDeMonMain\MainClass.class" => ici, il faut mettre le nom de ta classe qui contient la méthode classe main.

"-Xmx20000m " => tu as 20Go de RAM ? :) 
11 Mars 2007 16:03:59

Ouioui, c'est ce que j'ai fait, et avec eclipse -Xmx512m -Xms512m lePathDeMonMain\MainClass.class ca a fonctionné.

Bah j'ai mis un truc énorme, pour voir s'il prenait une valeur maximum.
Il a accepté les 20Go. Mais ça n'a rien changé à mon probleme...
Je peux réessayer avec moins mais je ne pense pas que ca changerait qq chose, avec 512m le probleme subsiste...

Allez, il est qd-meme pas si énorme mon fichier... il doit bien y avoir une astuce... grrr
a b L Programmation
11 Mars 2007 17:59:09

Et avec -Xaprof, rien ne s'affiche dans la console ?
Si oui, je ne vois plus quoi faire.
11 Mars 2007 18:07:59

Non, ni quand je fais eclipse -Xaprof, ni quand je fais eclipse -Xaprof ...\mainClass.class
Ca ouvre simplement eclipse, sans aucun message supplémentaire.

Quand je fais javaw -Xaprof, il ne reconnait pas la commande.

Tant pis, je me débrouillerai pour trouver la solution,
encore une grand merci à toi Cricky
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS