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

Langage Java Discussion :

String, garbage collector et outofmomoryError


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Par défaut String, garbage collector et outofmomoryError
    Bonjour,

    J'ai développé un programme de gestion pour un commerce familiale. Dans un souci de bien nétoyer la mémoire J'ai instancier les string comme ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String teste = new String ("teste");
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String teste = "teste";
    Maintenant, je me trouve avec une erreur de type outOfmemoryError : java heep space. donc même la méthode stop and wait ne suffit appartement pas à faire le ménage, et ce malgré l'installation d'une barrette supplémentaire de mémoire viive dans l'ordinateur du client et d'allocation de 1024 mo
    sachant que :

    1. Mon serveur de base de donnée tourne dans un thread séparé mais partage le même processus.
    2. Le programme fait appelle à la base de donnée à l'ouverture de chaque fenêtre et surtout lorsque ces dernières doivent se rafraîchir et l'utilisateur garde souvent toutes les fenêtre ouvertes
    3. toutes les propriété sont globale est sont instanciée dans le constructeurs.

    Questions.
    Comment structurer le code de telle manière a optimiser l'utilisation de la mémoire ?

    Faut-il séparer le processus du serveur de base de donnée du programme principal ?

    Que faire avec les fenêtre ouverte par l'utilisateur mais non utilisée. Peut-on les fermer au moment du passage du garbage collector. Par exemple au moment de l'exécution de la méthode finalize() ?

    Merci pour votre aide ?

    Salutations

  2. #2
    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 : 46
    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
    Citation Envoyé par Battant Voir le message
    Bonjour,

    J'ai développé un programme de gestion pour un commerce familiale. Dans un souci de bien nétoyer la mémoire J'ai instancier les string comme ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String teste = new String ("teste");
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String teste = "teste";
    Ce qui est une idée stupide, là tu crée deux string au lieu d'une. Si tu n'a jamais vu un code java faire comme tu le fais, c'est qu'il y a une bonne raison, tu multiplie le nombre d'instances pour la même string :s


    Citation Envoyé par Battant Voir le message
    Maintenant, je me trouve avec une erreur de type outOfmemoryError : java heep space. donc même la méthode stop and wait ne suffit appartement pas à faire le ménage,
    De quoi on parle là? C'est quoi cette histoire de stop and wait?
    Citation Envoyé par Battant Voir le message
    3. toutes les propriété sont globale est sont instanciée dans le constructeurs.
    ??? Qu'est-ce que tu entends pas "globale" ???


    Que faire avec les fenêtre ouverte par l'utilisateur mais non utilisée. Peut-on les fermer au moment du passage du garbage collector. Par exemple au moment de l'exécution de la méthode finalize() ?
    Au moment du garbage collector de quoi? Si tu veux fermer des fenêtres, fait le à des moments bien précis, pas dans un finalize(). Oublie que ce truc existe, on n'en a JAMAIS besoin.


    Comment structurer le code de telle manière a optimiser l'utilisation de la mémoire ?
    Avec méthode, et en évitant les références inutiles. Si tu constate que ton application deviens trop gourmante, passe un coup de profiler dessus pour faire une analyse de la consommation mémoire et voir si t'as pas une erreur dans le code qui te ferais retenir trop de choses.

Discussions similaires

  1. [JVM] Java 5 et Garbage Collector(Parralèle)
    Par ssaunois dans le forum Général Java
    Réponses: 6
    Dernier message: 28/11/2005, 23h42
  2. [JVM]Garbage collector
    Par godik dans le forum Général Java
    Réponses: 5
    Dernier message: 07/10/2005, 09h12
  3. JPanel et Garbage Collector
    Par tck-lt dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 25/07/2005, 18h03
  4. [JVM] les objets et le Garbage collector
    Par Kurdran dans le forum Général Java
    Réponses: 7
    Dernier message: 02/06/2005, 16h57
  5. [Language]Garbage collector
    Par GETah dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2005, 15h18

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