7
votes

La collecte des ordures est-elle utilisée dans les applications de cacao de qualité de production?

Je m'interroge principalement sur l'impact que la collecte des ordures aurait sur la performance. Est l'utilisation de la collection de déchets fronça les sourcils pour les applications de libération?

Une autre préoccupation que je peux penser, c'est que l'utilisation de la collection de déchets pourrait entraîner une programmation en bâtiments.

Utilisez-vous une collection de déchets dans vos applications?


0 commentaires

5 Réponses :


22
votes

La collecte des ordures est utilisée dans de nombreuses applications de qualité de production. Xcode, automatisteur, préférences du système et plusieurs autres applications système sont GC'D et vous pouvez vous attendre à ce que la tendance se poursuive au fil du temps.

De plus, de nombreux développeurs ont embrassé GC et l'utilisent exclusivement dans leurs applications. Les nouvelles versions d'Intuit de Quicken et QuickBooks pour le Mac sont collectées, par exemple.

Il y a aussi un certain nombre d'avantages de GC. En haut de ma tête et d'expérience personnelle:

  • Il facilite la multithreading; Une simple assignation est une déclaration atomique de propriété

  • Il décharge un tas de gestion de la mémoire à d'autres cœurs; Il est naturellement concurrent et décharge un calcul de bouquet à partir du fil principal (ou des threads de calcul)

  • Dans de nombreux cas, l'allocation et la distribution peuvent se produire entièrement dans le contexte d'un thread, éliminant ainsi tout besoin de synchronisation globale ou de verrouillage

  • Le collecteur est devenu plus rapide avec chaque version de Mac OS X et que la tendance se poursuivra (juste comme elle a le reste du système). En déchargeant la charge informatique de votre application sur les cadres fournis par le système, votre application gagne de plus en plus d'optimisations au système sous-jacent.

  • Parce que le collecteur a une connaissance intime du graphique d'objet - des pointeurs entre objets - en mémoire, il fait analyse et débogage de manière significative. Au lieu de "Où vient ce pointeur pendling?", La question est maintenant "donnez-moi une liste de raisons pour lesquelles cet objet colle plus longtemps que je ne le pense?".

    Cela ne veut pas dire qu'il n'y a pas de travail à faire pour que votre demande fonctionne de manière optimale sous GC. Il y a certainement de telles tâches!


2 commentaires

Il convient de noter que la collecte des ordures a été obsolète en 10.8.


Il convient de noter que 10.11 sera la dernière version de OS X pour inclure la collecte des ordures d'exécution. Les applications qui utilisent la collecte des ordures peuvent ne pas fonctionner correctement ni du tout sur 10.12.



5
votes

La collecte des ordures existe depuis les années 1960 et est utilisée dans de nombreuses applications libérées. Toutes les applications .NET utilisent la collection de la poubelle. Apple utilise libauto en xcode.

La collection de déchets conduit généralement à des applications de meilleure qualité au cacao puisque le développeur est libéré du fardeau de la gestion de la mémoire. Il y a des tonnes d'applications de cacao qui fuient! (Bien que ce ne soit pas une quantité importante de mémoire)

J'ai tendance à utiliser GC depuis que je peux faire demi-tour mes applications plus rapidement et que je n'ai pas à vous soucier de la messagerie Zombie Objets!


1 commentaires

Il y a aussi des tonnes d'apps aux ordures collectées qui fuient. Il est tout simplement très probable qu'ils fuient moins.



3
votes

J'utilise GC chaque fois que je peux, car le meilleur code de tous est le code que vous n'avez pas à écrire en premier lieu. En outre, comme BBum a souligné ci-dessus, la course à la GC signifie que vous avez beaucoup plus d'informations disponibles pour l'analyse de la performance, si vous devez déboguer des goulots d'étranglement.


0 commentaires

1
votes

La collection de déchets est recommandée pour toutes les nouvelles applications de cacao et Apple mange sa propre nourriture pour chien en l'utilisant en Xcode. La performance est une situation intéressante, car pendant que vous consomme très probablement plus de cycles de processeur dans l'ensemble, la demande peut réellement se retrouver plus rapidement dans certaines zones en raison de la multiplication du collecteur et de la simplification des méthodes d'accesseur.

Les ordinateurs sont faits pour faire du travail pour nous. Le comptage de référence du cacao est généralement facile à gérer, mais la collecte des ordures est une dernière chose qu'elle peut faire maintenant - laissez la machine faire le travail afin que vous puissiez vous concentrer sur des choses qui comptent!


0 commentaires

1
votes

Comme les autres, je recommanderais vivement à l'aide de GC. Le surcharge de performance est généralement négligeable! Je n'ai pas besoin de répéter les avantages comme indiqué par d'autres utilisateurs.

Cependant, j'encouragerais vivement à écrire des bibliothèques, par opposition aux applications, à exécuter également en mode non-GC. Certains environnements ne peuvent pas exécuter de code GC, l'iPhone étant le notable; Donc, si vous avez créé une bibliothèque interne pour vous-même, que vous l'envisagez de la réutiliser ultérieurement pour une application iPhone, je vous recommanderais de la concevoir ainsi que cela fonctionnerait également dans un environnement non-GC.

Conversion d'un code GC en code non gc est beaucoup plus difficile que l'inverse!


2 commentaires

Malgré le fait que certains environnements (tels que iPhone et pré-léopard) ne prennent pas en charge GC, vous pouvez compiler des bibliothèques en mode double. Il faut un peu de travail supplémentaire, mais c'est certainement possible. Je l'ai fait pour le cadre châtrage open-source moi-même.


@Quinn, ne peut pas être d'accord plus d'accord. Cependant, j'ai clarifié mon message pour indiquer que je voulais dire que les bibliothèques devraient être écrites pour être utilisables dans des environnements non gc.