"stop-the-world" → le GC bloque tous les process…
A ne pas ecrire: System.gc()
Mettre vos objets a null est une bonne idee par contre.
Les objets sont mis dans le Young generation puis ils sont copiés dans le old generation si ils doivent etre conservés plus longtemps.
On parle de FullGC quand le GC verifie aussi le old generation.
Card Table pour garder une trace des Young objets qui sont references par des old objects.
According to JDK 7, there are 5 GC types.
Pour le monitoring: jps pour obtenir le id des machines virtuelles java. Puis jstat pour effectuer les mesures. exemple info toutes les secondes: jstat –gc <vmid> 1000
Graphiquement, on peut utilise Java VisualVM (jvisualvm) ou VisualVM (visualvm).
Tuning:
D'abord programmons correctement: utiliser StringBuilder et StringBuffer au lieu de String.
Pour tuner le GC, il faut minimiser le passage de eden vers old zone et faire baisser le temps des full gc.
Comprendre le GC
http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/
Monitorer le GC
http://www.cubrid.org/blog/dev-platform/how-to-monitor-java-garbage-collection/
Optimiser le GC
http://www.cubrid.org/blog/dev-platform/how-to-tune-java-garbage-collection/
Optimisation du garbage collector:
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
Garbage Collector Classic:
Parallel Collector:
Les objets sont rangées par durée de vie. Les objets ont une durée de vie courte en général. Les grosses collections ont une durée de vie plus longue. On parle de Generations Young (puis Survivor), Tenured (titulaire) ou Permanent.
Connaitre les collections (notamment les non synchronized) ArrayList, HashMap
Eviter Vector, HashTable.
On n'utilise plus les synchronized.
Tout savoir sur le multi threading (notamment synchronized)
encapsulation
polymorphisme
dead lock
http://rom.developpez.com/java-synchronisation/
JUnit tests
tests d'intégration, tests d'acceptance et tests unitaires
http://www.siteduzero.com/informatique/tutoriels/les-tests-unitaires-en-java/definitions-et-utilite
un test unitaire doit etre reproductible, compréhensible et documenté.
test-driven : on écrit les tests en premier avant le code.
Liste des Asserts:
http://junit.sourceforge.net/javadoc/org/junit/Assert.html
Tests coverage: plugin Eclipse EclEmma
mock : classe qui implemente une vraie interface avec du code pipeau pour les tests
Tests java:
http://www.indiabix.com/online-test/java-programming-test/61
Classes Internes
http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class
http://blog.xebia.fr/2012/11/08/back-to-basics-bien-maitriser-les-classes-internes-en-java/