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

Java Discussion :

Java outOf memory


Sujet :

Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Java outOf memory
    Bonjour,
    Lors de l’exécution de mon app , j'ai cette erreur: java.lang.OutOfMemoryError: Java heap space.
    J'ai essayé de changer la variable 'Xmx' pour reconfigurer la JVM, et mettre '-Xmx=512 -Xmx=1024', mais cette fois il m'affiche rien :s.
    que dois-je faire?
    Merci d'avance .

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Que fait ton application ?
    Est-ce normal qu'elle ait besoin de tant de mémoire ?


    a++

  3. #3
    Membre du Club Avatar de apicard3
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 60
    Points : 50
    Points
    50
    Par défaut
    Je te conseil d'utiliser un profiler pour rechercher les pertes mémoires. Si tu est sous linux, le chemin est normalement /usr/lib/jvm/jdk1.x/bin/jvisualvm .
    De plus j'avais eu un probleme comme toi il y a quelques temps. Il me semble que je l'avais résolu en modifiant les propriétés du projet sous netbeans, et non pas le fichier
    Elle m'a dit "Le soleil est en toi et tout tourne autour du soleil"

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    L'application se connecte au Workbench pour ramener deux champs, un champ de type String, et l'autre de type Blob, j'ai se basé sur la technologie Spring JDBC pour la connexion à la base.
    j'ai fais une requête Sql pour sélectionner les champs en question, où j'ai mis un jointure. la requête est la suivante:

    (
    String SQL = "select b.id_ws, b.reponse from ws_traces_consolidees as c inner join ws_traces_brutes " + "as b on b.id_ws = c.id_ws where b.web_service ='"
    + NomWS + "' and b.methode ='" + methodeWS + "' and c.numero_ps = '" + numPS + "' and c.nir_13 = '" + NIR + "' and c.date_naissance ='" + DateNaissance
    + "'";
    )

    j'ai testé la requête sous Workbench est ça a marché, mais quand je l’exécute sous Eclipse, j'ai l'erreur cité au dessus.

  5. #5
    Membre du Club Avatar de apicard3
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 60
    Points : 50
    Points
    50
    Par défaut
    Tu peux tester ta requête en limitant le nombre de résultats en ajoutant LIMIT X (X est le nombre de résultats) a la toute fin de la requete. Si ca marche dans ce cas, on reste bien sur le même problème.
    Elle m'a dit "Le soleil est en toi et tout tourne autour du soleil"

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    bah oui, maintenant ça marche avec 'Limit 2' , mais moi je dois avoir une visibilité sur tous les résultats en sortie.... :s

  7. #7
    Membre du Club Avatar de apicard3
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 60
    Points : 50
    Points
    50
    Par défaut
    C'est peut être le paramètre 'XX:MaxPermSize=256m' qu'il faut ajouter
    Elle m'a dit "Le soleil est en toi et tout tourne autour du soleil"

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    je l'ajoute où exactement?Merci.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Juste après -Xmx=512 -Xmx=1024.

    Quelle est la taille de ces blobs et combien en ramenez-vous?

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    En fait la taille de chaque Blob est de 6 Ko ( plus ou moins), et pour le nombre de ligne de retour c'est 15 lignes ( c'est pas figé ). c'est pas vraiment beaucoup et pourtant ça se bloque!!

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    Citation Envoyé par soukaina123 Voir le message
    En fait la taille de chaque Blob est de 6 Ko ( plus ou moins), et pour le nombre de ligne de retour c'est 15 lignes ( c'est pas figé ). c'est pas vraiment beaucoup et pourtant ça se bloque!!
    En effet. Il doit avoir un problème dans code avec par exemple, des flux non fermés, etc........

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Tous les flux sont fermés, j'ai vérifié ça, d'ailleurs il'y a qu'un seul, c'est le context, et c'est déjà fermé :o

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Et on pourrait voir le code en question ?


    a++

  14. #14
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    le voilà
    ça c'est la méthode qui permet la connexion à la DB :
    public List<FluxTraceConsolidee> listeFluxAvecNir( final String NomWS, final String methodeWS, final String numPS, final String NIR,
    final String DateNaissance ) {
    String SQL = "select * from ws_traces_consolidees as c inner join ws_traces_brutes as b on b.id_ws = c.id_ws where b.web_service ='" + NomWS
    + "' and b.methode ='" + methodeWS + "' and c.numero_ps = '" + numPS + "' and c.nir_13 = '" + NIR + "' and c.date_naissance ='" + DateNaissance
    + "' limit 20";

    List<FluxTraceConsolidee> listeflux = jdbcTemplateObject.query( SQL, new FluxMapper() );
    return listeflux;
    }
    et voilà le mainApp( l'appel de la méthode en question)
    public static void main( final String[] args ) {
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "Beans.xml" );

    IFluxConsolideDAO fluxJDBCTemplate = (FluxJDBCTemplate) context.getBean( "FluxJDBCTemplate" );

    System.out.println( "------Listing Multiple Records--------" );
    String NomWS = "ProcessAbonnementIdentificationBenefPSParametrableService";
    String methodeWS = "getAbonnement";
    String numPS = "002011088";
    String NIR = "2700138516054";
    String DateNaissance = "19700108";

    List<FluxTraceConsolidee> flux = fluxJDBCTemplate.listeFluxAvecNir( NomWS, methodeWS, numPS, NIR, DateNaissance );
    for ( FluxTraceConsolidee record : flux ) {
    //System.out.print( "ID : " + record.getId() );
    System.out.print( "Id Web Service: " + record.getIdWebService() );
    System.out.println( " , WS : " + record.getIdWebService() );
    }

    context.close();
    }

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Et à quoi ressemble FluxTraceConsolidee et FluxMapper ?


    a++

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 170
    Points
    170
    Par défaut
    Tu pourrais utiliser JMC ou jconsole pour voir l'évolution de la mémoire de ton application

    Combien y-t-il de ligne dans ta table, quels sont les types des colonnes ?
    Dans tous les cas 1G pour lire les lignes d'une table cela devrait être suffisant.


    Sinon est-ce que tu peux essayer :
    1) récupère toutes les primary key.
    2) récupère les elements de la table par paquet de 500 ?

  17. #17
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    en fait ' FluxTraceConsolidee ' c'est l'image de la table , c'est une classe qui contient tous les champs de la table ds la DB, ainsi des accesseurs ( getters & setters )

    et pour ' FluxMapper ' sert le mapping entre la table( ds la db ) et la classe ' FluxTraceConsolidee '

    voilà le Code :

    Code : 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
     
    public class FluxMapper implements RowMapper<FluxTraceConsolidee> {
    	public FluxTraceConsolidee mapRow( final ResultSet rs, final int rowNum ) throws SQLException {
    		FluxTraceConsolidee flux = new FluxTraceConsolidee();
     
    		flux.setCodeGestionnaire( rs.getNString( "code_gestionnaire" ) );
    		flux.setCodeProprietaire( rs.getNString( "code_proprietaire" ) );
    		flux.setCodeReponse( rs.getString( "code_reponse" ) );
    		flux.setCodeSpecialite( rs.getString( "code_specialite" ) );
    		flux.setDateNaissance( rs.getString( "date_naissance" ) );
    		flux.setEndPoint( rs.getString( "end_point" ) );
    		flux.setIdServeur( rs.getString( "id_serveur" ) );
    		flux.setIdSessionServeur( rs.getString( "id_session_serveur" ) );
    		flux.setIpEmetteur( rs.getString( "ip_emetteur" ) );
    		flux.setLibelleReponse( rs.getString( "libelle_reponse" ) );
    		flux.setLogicielPS( rs.getString( "logiciel_ps" ) );
    		flux.setNir13( rs.getString( "nir_13" ) );
    		flux.setNomBeneficiaire( rs.getString( "nom_beneficiaire" ) );
    		flux.setNumeroAccreditation( rs.getString( "numero_accreditation" ) );
    		flux.setNumeroAMC( rs.getString( "numero_amc" ) );
    		flux.setNumeroDossier( rs.getString( "numero_dossier" ) );
    		flux.setNumeroPS( rs.getString( "numero_ps" ) );
    		flux.setPrenomBeneficiaire( rs.getString( "prenom_beneficiaire" ) );
    		flux.setStatusDenormalisation( rs.getBoolean( "statuts_denormalisation" ) );
    		flux.setVersionLogicielPS( rs.getString( "version_logiciel_ps" ) );
    		flux.setVersionServeur( rs.getString( "version_serveur" ) );
    		flux.setIdWorkflow( rs.getString( "id_workflow" ) );
    		return flux;
    	}
    }

  18. #18
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    C'est normal que cela ne correspondent pas à tes précédent messages ? ("L'application se connecte au Workbench pour ramener deux champs, un champ de type String, et l'autre de type Blob,")

    Sinon quel est la quantité de ligne retourné ? Et la longueur de chaque champs ?


    a++

  19. #19
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    le nombre de ligne retourné est plus que 1000 rows, et pour la longueur de chaque champ je sais pas exactement sauf pour le champ de type Blob qui égale 6 Ko.

  20. #20
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Soit 6Mo environ. Il n'y a pas de raison que cela plante.

    C'est lequel le champs de type blob ?
    Tu peux logger la taille de chaque champs dans ton FluxMapper ?


    Sinon tu va faire quoi au final ? Parce que si c'est pour traiter les éléments lignes par lignes comme tu le fait autant récupérer le résultat élément par élément pour les traiter un à un, plutôt que de créer une "grosse" liste...


    a++

Discussions similaires

  1. erreur Out of memory Error+ java(jb9 sous linux)
    Par Scal-tn dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 23/04/2008, 10h27
  2. [UC] Projet Java/UML Jeu type Memory
    Par akito dans le forum Cas d'utilisation
    Réponses: 11
    Dernier message: 17/04/2008, 13h33
  3. out of memory java heap space : 2048M pas suffisant?
    Par waflyx dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 21/12/2007, 19h58
  4. Java vs memory editing
    Par orelero dans le forum Général Java
    Réponses: 7
    Dernier message: 17/04/2007, 17h23
  5. [JAVA / Out Of Memory] Aide pour optimiser du code
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 7
    Dernier message: 06/02/2007, 09h58

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