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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Par défaut Pouquoi Java utilise un Garbage Collector et ne permet pas au programmeur de détruire lui-même les instances ?
    Bonjour,

    Question culture générale:

    Je ne comprends pas pourquoi Java a fait le choix de s'en remettre corps et âme a son garbage collector et n'autorise pas les développeurs a utiliser des fonctions comme "delet(this.classe)"

    Merci à vous!

  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
    Parce que autoriser un delete, c'est autoriser que l'utilisateur continue d'utiliser l'objet après le delete. Ce qui pose alors problème puisque le programme à alors accès à une zone mémoire qui ne lui est plus attribué, via l'ancienne reference. Viennent alors des problèmes de type corruption de mémoire que java veux rendre impossibles, les problèmes de sécurité, et la difficulté pour le programmeur de savoir si réellement l'objet n'est plus utilisé.

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    D'abord, java n'est pas le seul langage à utiliser un garbage collector, même .net s'y est mis...

    Je ne suis pas d'accord avec toi, le programmeur peut très bien agir pour qu'un objet soit éligible au GC, il suffit de supprimer toutes les références à cet objet... et c'est là que le bât blesse... en est-il capable ? Dans bien des cas, non...
    Du coup, ce que te dit tchize_ prend tout son sens. Il vaut mieux utiliser un mécanisme du type GC que de rendre possible une référence sur un objet qui n'existe plus, tu imagines les effets de bord ? Non... et personne ne le peut

    Bref, à mon sens, le GC est un très bon mécanisme et personnellement, je ne reviendrais pas dessus.
    La plupart de ceux qui le critiquent sont des programmeurs qui viennent du langage C, en oubliant qu'à la base ce langage a été conçu pour écrire un OS (Unix) et en omettant également toutes les "bavures" qu'il autorise quand il est employé par des débutants...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    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 OButterlin Voir le message
    Dans bien des cas, non...
    Je rajouterais qu'en général, quand le programmeur en est capable, ce sont des cas tellement simple que ça ne représente rien comme travail pour le GC

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Je rajouterais qu'en général, quand le programmeur en est capable, ce sont des cas tellement simple que ça ne représente rien comme travail pour le GC
    C'est pas faux

    Souvent, c'est le syndrome : je veux le beurre et l'argent du beurre...
    Je veux des références d'objets, les passer comme je veux, à qui je veux (sans savoir forcément ce qui en est fait), les stocker où je veux... mais je ne me rappelle plus où !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Les concepteurs de Java n'ont pas ajouté d'instruction delete parce qu'ils voulaient justement supprimer cette contrainte du C++.
    Aujourd'hui tu as les normes C++11 et C++14, mais le problème du delete existe depuis plus de 30 ans et continuera d'exister.
    Ce que tu dois comprendre, c'est qu'avoir l'instruction delete en Java ne servirait à rien parce que ce dernier se débrouille tout seul pour libérer la mémoire. Pour les cas spécifiques le langage t'offre la possibilité de gérer la mémoire d'une autre façon grâce aux types SoftReference ou WeakReference par exemple.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

Discussions similaires

  1. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  2. Suppression des objets touchant le bord
    Par Natrio dans le forum OpenCV
    Réponses: 0
    Dernier message: 23/02/2009, 14h28
  3. C++ builder : prob suppression d'objet
    Par squellettor dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/05/2008, 18h59
  4. Suppression d'objets en VBA
    Par specialfox dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/03/2008, 18h04
  5. Hibernate + suppression d'objets dans une collection
    Par Saiyan54 dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 15h39

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