IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Java dépassement de capacité ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut Java dépassement de capacité ArrayList
    Bonjour,

    J'ai une liste qui comporte environ 65537 élèments (maximum des possibilités d'affichage Excel).

    Cependant, j'ai un message d'erreur de dépacement de capacité !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Object> list = new ArrayList<Object>();
    Quelle est la limite pour une ArrayList ?
    Quelle solution puis-je utiliser SVP ?

    Merci d'avance.
    Ritchie.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    ArrayList, comme son nom l'indique, est une liste implémentée à l'aide d'un tableau (y'a un tableau à l'intérieur de ArrayList)

    et les tableau en java, on les indexe sur un int je crois.... donc en gros je dirais 2'147'483'647 de cases au max.

    D'ailleur, ça ça compile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] b = new byte[Integer.MAX_VALUE];

    [EDIT] ha ok, c'est simplement une erreur mémoire. C'est pas lié au fait que tu utilise arraylist, mais à la limitation mémoire de la jvm

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Par défaut
    Oui, augmente la mémoire accordée à ta jvm.
    Ensuite, si tu sais à l'avance que ton ArrayList va contenir 65537 valeurs, penses à bien l'initialiser:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Object> list = new ArrayList<Object>(65537);

  4. #4
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    Merci pour ces réponses.

    J'ai un exécutable (jar), et un batch de lancement.
    voici ma ligne de commande pour lancer mon exécutable Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Java\jre1.6.0_05\bin\java" -jar Pratic_fat.jar  -Xmx256m
    cela ne résout toujours pas mon problème. Cette ligne de commande est elle bonne ?

    D'autre part, où paramétre t'on la mémoire JVM dans Eclipse ?

    Merci.
    Ritchie.

  5. #5
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    Oui, augmente la mémoire accordée à ta jvm.
    Comment augmente t'on la mémoire JVM SVP ?

    A priori -Xmx256m ne fonctionne pas !

    Merci d'avance.
    Ritchie.

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par ritchie23 Voir le message
    Comment augmente t'on la mémoire JVM SVP ?
    Comme tu l'as fait...

    A priori -Xmx256m ne fonctionne pas !
    Pourquoi ? Tu as toujours l'erreur mémoire ? Tu n'as pas augmenté assez.
    Que mets-tu dans cet ArrayList ? On peut avoir le code ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ritchie23 Voir le message
    Merci pour ces réponses.

    J'ai un exécutable (jar), et un batch de lancement.
    voici ma ligne de commande pour lancer mon exécutable Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Java\jre1.6.0_05\bin\java" -jar Pratic_fat.jar  -Xmx256m
    cela ne résout toujours pas mon problème. Cette ligne de commande est elle bonne ?

    D'autre part, où paramétre t'on la mémoire JVM dans Eclipse ?

    Merci.
    Ritchie.
    Salut

    Il ne faudrait pas plutôt mettre l'option -Xmx256m avant -jar Pratic_fat.jar
    ärce que pour moi là, l'option -Xmx256m est interprétée comme une option pour TON programme et pas pour la JVM, donc ne sert à rien...

  8. #8
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    Bonjour,

    Merci à tous pour votre aide.

    Merci George7. Effectivement l'allocation de la ressource mémoire de la JVM doit se mettre avant le -jar.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Java\jre1.6.0_05\bin\java" -Xmx256m -jar Pratic_fat.jar
    Cela répond parfaitement à mon besoin.
    Seul point restant est que je souhaiterais aussi augmenter la JVM sous mon éditeur Eclipse. (une idée ??)
    mais là je vais mettre un message sur le forum Eclipse.

    Merci.
    Ritchie.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 180
    Par défaut
    C'est un argument de la machine virtuelle, donc à ajouter dans la page de configuration de lancement de ton appli, dans l'ongle Arguments/Vm Arguments lorsque tu utilises la "Run Dialog"

  10. #10
    Membre confirmé Avatar de ritchie23
    Profil pro
    Inscrit en
    Août 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2008
    Messages : 122
    Par défaut
    Slt guilopouloos,

    Mais quel nom de variable dois-je utiliser STP ?
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${resource_loc}-Xmx878m
    mais bien entendu, c'est KO.

    Par contre, j'ai aussi essayé d'augmanter la JVM dans le fichier ini
    , et là, la mémoire virtuelle est toujours insuffisante.

    Peux tu encore m'aider STP ?
    Ritchie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/10/2014, 16h08
  2. Transaction, Dépassement de capacité
    Par SkYsO dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 23/12/2008, 14h56
  3. Dépassement de capacité
    Par jean-pierre96 dans le forum Access
    Réponses: 2
    Dernier message: 10/05/2006, 16h04
  4. Réponses: 8
    Dernier message: 06/02/2006, 14h34
  5. détection de dépassement de capacité
    Par tut dans le forum C++
    Réponses: 10
    Dernier message: 01/12/2004, 22h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo