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 :

[Language][Objets en Paramètres]Performances?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut [Language][Objets en Paramètres]Performances?
    Bonjour à tous,

    tout d'abord désolé pour le titre de ce Thread, mais j'avoue ne pas trop savoir comment aborder mon questionnement :

    J'aimerais savoir s'il n'est pas trop lourd en mémoire utilisée d'avoir des classes qui s'échangent des objets. Je m'explique :

    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
    Classe Class_1
     
    Public String s1;
    Private JTextField jt1;
    Private JProgressBar jpb;
    Class_2 c2;
    ...
     
    //constructeur
    s1 = "string";
    jt1 = new JTextField();
    jpb = new JProgressBar();
    ...
    //methode diverse
    c2 = new Class_2(jpb, jt1, s1, ...);
     
    //2 eme methode diverse
    Class_3 c3 = new Class_3(c2, jpb, jt1, s1, ...);
    En gros, les paramètres sont des objets qui eux même ont parfois d'autres objets en paramètres, etc...

    Sans parler architecture (car c'est juste une question que je me pose, je n'ai pas d'appli qui est chargée de cette façon), n'est-ce pas un peu lourd de s'échanger des tas d'objets entre instance d'autres objets ?

    Régis.
    ps:je sais pas si je suis très clair, là, d'un coup en me relisant...

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Par défaut
    Tu veux dire que c'est plus lourd de créer 10 petits objets au lieu d'un seul qui contiendrait exactement les mêmes informations ?

    Le seul surcoût d'avoir beaucoup de petits objets serait lors de la création / destruction des objets par le gc. Il faudrait faire un test, mais je pense que pour que ce soit significatif, il faudrait vraiment avoir affaire à un grand nombre d'objets.

    Sinon il y a au contraire économie (du temps du développeur) car les petits objets sont plus spécialisés, donc plus facile à comprendre et à maintenir.

    Pour ce qui est du passage d'un objet en paramètre, comme on ne passe que le pointeur, ça n'est pas très cher.

  3. #3
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Merci pour ta réponse.

    Cela me permet de mieux préciser ma pensée:

    Ce n'est effectivement que la réference que l'on passe en paramètre ?
    Ou bien l'objet "pointé" est-il instancié à nouveau dans une mémoire nouvellement allouée ?

    En gros, si j'instancie un objet Objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objet ob1 = new Objet();
    Si j'envoi cet objet en paramètre dans un tas de nouveaux objet de type Client, Serveur, Ihm, etc....

    Je n'ai en mémoire que l'objet ob1, ou bien tous un tas de ob1 égaux mais stockés en des endoits différents de la mémoire ?

  4. #4
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Regis.C
    Je n'ai en mémoire que l'objet ob1, ou bien tous un tas de ob1 égaux mais stockés en des endoits différents de la mémoire ?
    Tu as un seul objet avec plusieurs référence.

    En Java la règle est simple :
    • Les objets sont toujours passés par référence.
      Les types primitifs sont passés par copie.


    a++

  5. #5
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Citation Envoyé par adiGuba
    Salut,

    Citation Envoyé par Regis.C
    Je n'ai en mémoire que l'objet ob1, ou bien tous un tas de ob1 égaux mais stockés en des endoits différents de la mémoire ?
    Tu as un seul objet avec plusieurs référence.

    En Java la règle est simple :
    • Les objets sont toujours passés par référence.
      Les types primitifs sont passés par copie.


    a++
    Merci pour ces infos.
    Je n'avais pas de problème particulier concernant le sujet que j'ai lancé en dehors du fait que je suis curieux, et j'aime bien comprendre exactement ce qu'il se passe !

    Me voila ravi !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/08/2010, 17h17
  2. Réponses: 3
    Dernier message: 04/01/2010, 19h32
  3. Réponses: 5
    Dernier message: 20/08/2009, 11h02
  4. objet HttpSession peut-il être null
    Par AnneB dans le forum Struts 1
    Réponses: 3
    Dernier message: 30/06/2008, 11h23
  5. Réponses: 10
    Dernier message: 04/07/2006, 20h57

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