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 :

problème d'allocation de mémoire pour la JVM


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut problème d'allocation de mémoire pour la JVM
    Bonjour,

    j'ai la configuration suivante

    RAM 2.5Go
    Windows XP SP3

    j'ai voulu allouée 1.3 Go pour la JVM mais j'aurais l'erreur "Could not instanciate the vm", malgré q'avant le lancement du programme je vérifie que 400Mo est uniquement utilisé.

    lorsque j'utilise 1.2Go pour la JVM, au cours de l'exécution du programme j'ai l'erreur "out of swap space"

    j'ai effectué des recheche j'ai trouvé que la première erreur est du au faite que la jvm ne trouve pas un segment contigue de taille 1.3 Go
    et la deuxième est du au faite que la jvm tente d'allourer plus de mémoire native pour ça fonctionnement mais le système refuse cette demande.

    mon problème est que si je diminu encors plus la taille du heap j'aurais "java heap space out of memory"

    SVP est ce qu'il ya un moyen de contourné ces erreurs ou bien de pouvoir alloué plus d'espace à la jvm

    Merci d'avance

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Ton programme consomme peut être trop de mémoire !
    A tu vraiment besoin de 1.3 Go ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Citation Envoyé par Alkhan Voir le message
    bonjour,

    Ton programme consomme peut être trop de mémoire !
    A tu vraiment besoin de 1.3 Go ?
    oui j'ai besoin de trop de memoire, en fait c'est un stress test de l'application avec 750 utilisateur virtuel.

  4. #4
    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
    La machine finale aura la même configuration que ta machine de test ?
    Les tests fonctionnels et métiers peuvent se faire sur une petite machine, mais les tests de charges sont à faire sur une machine iso-production. Enfin, ce n'est pas une règle non plus, tout dépend de tes contraintes projet, mais ne cherche pas non plus à en faire trop si ta machine de test est largement inférieure à la machine finale.
    Et ne dis pas trop vite que la mémoire utilisée est normale : il y aura toujours moyen de diminuer la mémoire utilisée, quelque soit le programme. Il suffit de trouver la bonne personne qui trouve la bonne méthode ;-)
    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.

  5. #5
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    La machine finale aura la même configuration que ta machine de test ?
    Les tests fonctionnels et métiers peuvent se faire sur une petite machine, mais les tests de charges sont à faire sur une machine iso-production. Enfin, ce n'est pas une règle non plus, tout dépend de tes contraintes projet, mais ne cherche pas non plus à en faire trop si ta machine de test est largement inférieure à la machine finale.
    le stress test est pour des raisons de comparatif de performance entre deux JVM,

    Citation Envoyé par dinobogan Voir le message
    Et ne dis pas trop vite que la mémoire utilisée est normale : il y aura toujours moyen de diminuer la mémoire utilisée, quelque soit le programme. Il suffit de trouver la bonne personne qui trouve la bonne méthode ;-)
    je me suis addresser à ce forum pour trouvez ce genre de personne.

  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
    Tu dois donner plus de détails, un peu de code, le contexte de ton application. Sans ça, impossible de t'en dire plus sur les raisons du ou des problèmes.
    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
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Tu dois donner plus de détails, un peu de code, le contexte de ton application. Sans ça, impossible de t'en dire plus sur les raisons du ou des problèmes.
    pour le context c'est un comparatif de performance entre deux version de jvm, on utilise une application web qu'on stress et voir sa comportement dans les deux version.

    mon problème est : est ce qu'il ya un moyen d'allouer 1400m ou plus pour le heap sachant que j'ai 2.5Go?

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    augmente la swap de la machine, je dirais, pour commencer


    Je crois me souvenir (je peux dire une connerie là) que windows XP, par défaut, a un modèle de mémoire 1G/3G pour le segment de l'application, 1G pour l'application, 3G pour le kernel, donc théoriquement impossible pour une applicaiton d'allouer au delà de 1G

  9. #9
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    augmente la swap de la machine, je dirais, pour commencer


    Je crois me souvenir (je peux dire une connerie là) que windows XP, par défaut, a un modèle de mémoire 1G/3G pour le segment de l'application, 1G pour l'application, 3G pour le kernel, donc théoriquement impossible pour une applicaiton d'allouer au delà de 1G
    pour le swap je l'ai déja augmenté ( à 3 Go)

    est ce que c'est possible de changé ce modèle ()

    merci d'avance

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je viens de checker, c'est 2G/2G par défaut, ce qui donne approximativement 1.8G max pour la jvm.

    Comment démarre tu ta jvm, quelle ligne de commande utilise-tu, quel message d'erreur exact as-tu?

  11. #11
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    je viens de checker, c'est 2G/2G par défaut, ce qui donne approximativement 1.8G max pour la jvm.

    Comment démarre tu ta jvm, quelle ligne de commande utilise-tu, quel message d'erreur exact as-tu?
    la version de la jvm que j'utilise et 1.5 le premier release
    les options de la jvm que j'utilise :
    -server -Xms1400m -Xmx1400 -Xmn300m -XX:MaxPermSize=100m

    le message est "Could not reserve enough space for the jvm" malgré que j'ai 1900m libre lorsque je lance le test.

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu demande beaucoup (trop) pour une jvm 32 bits tournant sur un windows.

    En pratique, java a besoin d'un segment de données continu. Dans ton application (point de vue de l'OS), tu aura un segment de 4G. Sur ce segment, 2G vont être réservé pour les appels noyaux, tu n'y a pas accès. Restent donc 2G (adresses 2G->4G). Dans ces 2G, dans la zone du troisème G, viennent se greffer toute une série de dlls windows (l'api graphique, etc). Ceci fragmente donc ton espace "2G" et limite donc le segment max que la jvm pourra allouer en un bloc. Et c'est la nature du problème, java a besoin d'allouer tout en un bloc continu.

    Les solutions possibles

    -> installer une java et un OS 64bits
    -> passer le noyau windows en mode 3G/1G, en suivant cette procédure: http://www.microsoft.com/whdc/system...AE/PAEmem.mspx (switch 3GB). Pas de garantie de succès mais comme on passe de 2G à 3G en espace utilisateur, on augmente les probabilités de trouver un segment aussi grand
    -> Diminuer tes besoins en mémoire.

  13. #13
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    merci pour les informations

    Citation Envoyé par tchize_ Voir le message
    -> installer une java et un OS 64bits

    est ce que on peut installer une jvm 64 bit sur un OS 32 bit, et si oui est ce que sa apporte quelque choz en terme de performance

    merci

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    non, vm 64 bits uniquement sur un OS 64bits

Discussions similaires

  1. Problème d'allocation de mémoire: Fatal error: Allowed memory
    Par Arget dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/09/2011, 07h55
  2. Allocation de mémoire pour fft
    Par Meyoz dans le forum MATLAB
    Réponses: 4
    Dernier message: 24/02/2008, 07h15
  3. problème d'allocation de mémoire
    Par NomadSoul123 dans le forum C++
    Réponses: 2
    Dernier message: 18/10/2007, 11h08
  4. problème d'allocation de mémoire
    Par kreel dans le forum C
    Réponses: 10
    Dernier message: 28/04/2007, 14h40
  5. Problème d'allocation de mémoire dans la pile
    Par prophet666 dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 19/01/2006, 02h22

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