Articles of garbage collection

Allocations dans les nouveaux TLAB vs allocations hors TLAB

L’outil Java Mission Control du JDK fournit des statistiques sur l’allocation des objects dans les nouveaux TLAB et les allocations en dehors de TLAB. (C’est sous Mémoire / Allocations). Quelle est la signification de ces statistiques, qu’est-ce qui est bon pour la performance d’une application? Dois-je m’inquiéter si des objects sont alloués en dehors de […]

Pourquoi les langages purement fonctionnels n’utilisent-ils pas le comptage de références?

Dans les langages purement fonctionnels, les données sont immuables. Avec le comptage des références, la création d’un cycle de référence nécessite la modification des données déjà créées. Il semble que des langages purement fonctionnels puissent utiliser le comptage de références sans se soucier de la possibilité de cycles. Est-ce exact? Si oui, pourquoi pas eux? […]

MemoryStream.Close () ou MemoryStream.Dispose ()

Lequel est-ce que j’appelle? Est-il nécessaire d’appeler les deux? L’autre lancera-t-il une exception si j’en ai déjà appelé une?

Cela aide-t-il GC à annuler les variables locales en Java

J’étais “obligé” d’append myLocalVar = null; déclaration en clause finale juste avant de quitter la méthode. La raison est d’aider GC. On m’a dit que j’aurais des SMS pendant la nuit quand le serveur planterait la prochaine fois, alors je ferais mieux de le faire :-). Je pense que cela est inutile, car myLocalVar est […]

Quand et comment un chargeur de classe Java est-il marqué pour le nettoyage de la mémoire?

Nous créons plusieurs chargeurs de classes enfants à charger dans plusieurs sous-applications dans une application Java “container”, prototypant le déploiement à chaud. Lorsque le chemin de classe d’un chargeur de classe particulier a changé (les jars ont été ajoutés, supprimés, mis à jour), l’ancien classloader est jeté (non référencé) et un nouveau classloader est créé […]

HttpWebRequest expire lors du deuxième appel

Pourquoi le code suivant Timeout est-il la seconde heure (et les suivantes)? Le code se bloque à: using (Stream objStream = request.GetResponse().GetResponseStream()) puis provoque une exception WebException indiquant que la demande a expiré. J’ai essayé ceci avec un WebRequest et HttpWebRequest Edit: Il semble que le code est en train de tomber dans request.GetResponse() Edit: […]

Déchargement de l’assembly chargé avec Assembly.LoadFrom ()

Je dois vérifier le temps nécessaire pour exécuter GetTypes () après le chargement de la DLL. Le code est comme suit. Assembly assem = Assembly.LoadFrom(file); sw = Stopwatch.StartNew(); var types1 = assem.GetTypes(); sw.Stop(); double time1 = sw.Elapsed.TotalMilliseconds; Je voudrais décharger et recharger le dll pour vérifier le temps passé à exécuter GetTypes () à nouveau. […]

Pourquoi les performances se dégradent-elles après environ 6 heures de fonctionnement de Java 9 G1 sans l’augmentation réelle de la charge?

J’ai basculé 1 instance (2 vCPU, 2 Go de RAM, charge ~ 4 Ko / s) vers Java 9 (depuis la dernière version de Java 8). Pendant un moment, tout allait bien et l’utilisation du processeur était la même qu’auparavant. Cependant, après environ 6 heures, la consommation de CPU a augmenté de 4% (de 21% […]

Comment réduire l’échec du mode concurrent java et le gc excessif

En Java, l’échec du mode concurrent signifie que le collecteur simultané n’a pas pu libérer suffisamment de mémoire sous forme de génération permanente et permanente et qu’il doit abandonner et laisser passer le gc complet du monde . Le résultat final pourrait être très coûteux. Je comprends ce concept mais je n’ai jamais bien compris […]

C #: les variables d’object doivent-elles être affectées à null?

En C #, est-il nécessaire d’affecter une variable object à null si vous avez fini de l’utiliser, même quand elle sera de toute façon hors de scope?