‫Nous reviendrons et c'est toi.
‫J'aimerais parler du ramasse-miettes et de la façon dont elle s'occupe de la mémoire.
‫Donc le ramasse-miettes est un outil qui est disponible et plusieurs langages de programmation.
‫Et dans certains d'entre eux, cela se fait manuellement.
‫Dans d'autres, cela se fait automatiquement.
‫Et le framework dot net fournit une gestion automatique de la mémoire, ce qui signifie que vous n'avez
‫pas à utiliser le ramasse-miettes manuellement comme vous le faites dans tous les langages de programmation.
‫Ainsi, les langages de programmation tels que C ou C++ et d'autres ont un ramasse-miettes manuel que vous devez exécuter de temps
‫en temps et vous devez savoir quand vous devez l'exécuter.
‫C'est donc quelque chose qui se fait automatiquement.
‫Intershop c'est pourquoi ce n'est pas quelque chose qui.
‫Oui, beaucoup de gens utilisent très souvent.
‫Donc, une fois que vous aurez des programmes plus complexes et vraiment avancés, vous commencerez à les utiliser de temps en temps.
‫Mais vraiment, ce n'est pas quelque chose que vous devez utiliser tout le temps ou même que vous devez utiliser du tout dans la plupart
‫des cas.
‫C'est pourquoi ce n'est pas un sujet majeur, pour ainsi dire.
‫D'accord.
‫Disons donc que nous avons cet objet appelé Dennis et qu'il est de type humain.
‫J'ai donc créé une classe qui s'appelle humain, et il y a plusieurs propriétés différentes et ainsi de suite.
‫Donc au final, je crée juste un objet de type humain.
‫Et ça s'appelle Dennis.
‫Et ce faisant, en utilisant ce nouveau mot-clé, j'ai besoin de mémoire car il crée un objet dans ma mémoire.
‫Alloue donc de la mémoire pour nous.
‫Et le framework s'occupe de récupérer la mémoire à utiliser dans le système une fois que les objets ne sont plus
‫utilisés.
‫Donc, dans ce cas, je crée cet objet et puis je pourrais l'utiliser et je pourrais l'utiliser encore et encore.
‫Mais à un moment donné, je ne vais plus l'utiliser et je vais peut-être même en couper les références.
‫Et puis, oui, le ramasse-miettes va le nettoyer car cette mémoire est maintenant bloquée et le
‫ramasse-miettes doit nettoyer.
‫Il doit donc rendre cette mémoire à nouveau disponible pour d'autres objets, par exemple.
‫Maintenant, regardons cela d'un point de vue visuel, nous avons donc ce pool de mémoire système sur le
‫côté gauche et notre programme sur le côté droit et le pool de mémoire système a un tas de mémoire.
‫Nous pouvons donc utiliser cette mémoire pour plusieurs programmes différents.
‫Mais maintenant, nous avons notre programme qui l'exécute.
‫Maintenant, dans notre programme, nous créons un objet.
‫Maintenant, tout à coup, nous avons besoin d'un peu d'espace dans notre mémoire.
‫D'accord.
‫Il y a donc une référence de notre programme à cette mémoire où notre objet est stocké.
‫D'accord.
‫Il y a donc une référence directe et nous pouvons la réutiliser et nous pouvons l'appeler à partir de différents endroits et ainsi de suite.
‫D'accord.
‫Et puis nous en avons un autre et un autre.
‫Nous avons donc plusieurs objets différents que nous avons créés et créerons à chaque fois le nouvel objet.
‫Il y a une mémoire allouée dans le pool de mémoire et il y a une référence de notre programme à cette mémoire.
‫Ces références sont donc là.
‫Il y a donc une référence de notre programme au pool de mémoire.
‫Maintenant, à un moment donné, la référence pourrait être supprimée.
‫Donc, nous supprimons peut-être la référence en définissant une variable maintenant ou en définissant l'objet à null, puis la référence
‫à soudainement disparu.
‫Maintenant, il n'y a plus de référence de notre programme à ce petit emplacement de mémoire ici.
‫Donc notre ramasse-miettes le remarque et dit, OK, il n'y a pas de référence.
‫Donc ce petit morceau de mémoire n'est jamais utilisé.
‫Alors nettoyons-le ou voyons, j'ai localisé ou libéré pour un autre emplacement et c'est ce qui se passe
‫alors.
‫Voyons maintenant un exemple du moment où le ramasse-miettes entrerait en jeu, et j'ai une fonction ici appelée
‫ma fonction et je crée un objet ici.
‫Encore une fois, ça s'appelle Dennis.
‫Et puis Dennis appelle ses méthodes ou nous appelons sa méthode, comme enseigner.
‫Ensuite, nous fixons son âge, puis nous appelons une autre méthode, vieillissons et ainsi de suite.
‫Mais à un moment donné, cet objet dunnies dans la mémoire n'est plus requis car l'appel de fonction est
‫terminé.
‫Ainsi se termine la fonction, l'objet.
‫Dennis sort du cadre et il n'y a plus de références à Dennis parce que ma fonction est une fonction
‫et nous avons cet objet qui est dans une fonction.
‫Donc, la portée de celui-ci est dans la fonction.
‫Ainsi, une fois l'appel de fonction terminé, il n'y a plus de référence directe à celui-ci car nous ne pouvons pas référencer
‫un objet qui se trouve dans une fonction depuis l'extérieur de cette fonction.
‫Droit.
‫Nous aurions donc besoin de créer des champs pour cela ou de faire d'autres approches pour cela.
‫Mais à la fin, le ramasse-miettes, qui nettoie cela, l'est alors et réaffecte cette mémoire.
‫Et l'idée générale ici est vraiment que ce n'est qu'un exemple simple.
‫Il existe de nombreuses autres situations dans lesquelles le ramasse-miettes entrerait en jeu, mais c'est quelque chose que
‫nous avons déjà utilisé.
‫Donc, les concepts que vous pouvez voir ici, nous les avons déjà vus dans d'autres vidéos ou conférences de ce
‫cours.
‫C'est pourquoi j'ai choisi cet exemple.
‫Alors, que faut-il savoir sur le ramassage des ordures ?
‫Eh bien, vous n'êtes pas obligé d'appeler manuellement le ramasse-miettes, mais vous pouvez le faire manuellement.
‫Le ramasse-miettes nécessite une puissance de traitement.
‫C'est donc sur un fil séparé et c'est très léger.
‫Mais encore, une certaine puissance de traitement est nécessaire.
‫L'objectif des ramasse-miettes est de libérer de la mémoire, mais de ne pas utiliser trop de puissance de traitement.
‫Il n'aura donc pas besoin de beaucoup de puissance de traitement en général, mais il ne sera pas appelé tout le temps
‫ou le ramasse-miettes ne fonctionnera pas tout le temps pour libérer de la mémoire.
‫Il va juste courir quand c'est nécessaire ou quand il juge les choses nécessaires c'est nécessaire.
‫C'est donc vraiment la partie délicate ici.
‫La mémoire n'est pas nécessairement récupérée tout de suite.
‫Cela peut prendre un peu de temps pour que le ramasse-miettes, même si vous l'appelez manuellement, n'ait pas à
‫s'exécuter immédiatement.
‫Ce sont donc des choses délicates à propos du ramasse-miettes que vous pouvez implémenter pour finaliser une méthode pour
‫exécuter du code juste avant qu'un objet ne soit libéré de la mémoire par le ramasse-miettes.
‫Cela signifie que si vous décidez d'exécuter un code spécifique juste avant qu'un objet ne soit nettoyé, donc juste avant que le ramasse-miettes
‫ne le nettoie.
‫Ainsi, une fois qu'il n'y a plus de références, par exemple, vous pouvez utiliser la méthode lizer finale au sein
‫de cette classe afin d'implémenter la fonctionnalité spécifique que vous souhaitez qu'ils exécutent.
‫Peut-être que vous voulez nettoyer des choses vous-même juste avant que le ramasse-miettes n'arrive et nettoie
‫votre objet ou déplace vers la mémoire ou libère cet objet de la mémoire.
‫D'accord.
‫Quand le ramasse-miettes s'exécute-t-il ?
‫Eh bien, lorsque le système a un peu de mémoire physique, lorsque la mémoire allouée dépasse le
‫seuil prédéfini, lorsque la méthode de collecte ou de collecte des garbage collectors est appelée, même si c'est une méthode super
‫délicate.
‫C'est donc quelque chose qui est.
‫Oui, très précis.
‫Très spécial.
‫Si vous voulez en savoir plus à ce sujet, vous devriez consulter la documentation sur le ramasse-miettes.
‫Mais la méthode collect n'est pas toujours appelée tout de suite et elle ne nettoie pas directement tout.
‫C'est plus comme si vous donniez une suggestion à l'outil.
‫Alors vous dites, OK, ramasse-miettes.
‫Personnellement, je pense que ce serait un bon point ou un bon endroit pour ramasser les ordures, mais dans certains cas, il pourrait ne pas
‫l'accepter ou il pourrait simplement le faire plus tard ou quelque chose comme ça.
‫Peut-être qu'il vient de faire le ramassage des ordures et qu'il décide que ce n'est pas nécessaire ou quelque chose du genre.
‫C'est donc une question très délicate.
‫Si vous voulez en savoir plus, consultez la documentation.
‫Mais je pense que c'est un bon point de départ pour comprendre ce que fait le ramasse-miettes.
‫Et comme je l'ai dit, dans la plupart des cas, vous n'en aurez pas besoin car de nos jours nous avons tellement de mémoire et que si vous
‫n'avez pas d'énormes fuites de mémoire dans vos programmes, vous ne devriez jamais rencontrer ces problèmes.