Ce qu'il faut savoir aussi

"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.

  1. Serial GC (utile pour peu de core et peu de memoire)
  2. Parallel GC (=throughput GC) (utilise la parallelisation pour le GC bien si beaucoup de cores et de memoire)
  3. Parallel Old GC (Parallel Compacting GC)
  4. Concurrent Mark & Sweep GC (or "CMS") (low latency GC) (est utile quand le temps de reponse est crucial)
  5. Garbage First (G1) GC (optimise pour la performance = le meilleur? Mais crash en JDK6)


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:
Garbage Collector Classic

Parallel Collector: Garbage 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/

M:/SanDiegoWWW/www/dokuwiki/data/pages/san.java/san.java.needed/start.txt · Dernière modification: 2013/06/11 15:09 par admin
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante : CC Attribution-Noncommercial 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki