1. La mort du GC ?
21h - 22h - Salle E. Fitzgerald & L. Armstrong
2. La mort prochaine du GC ?
Philippe PRADOS
OCTO - Consultant
@pprados – www.prados.fr
27 au 29 mars 2013
3. Philippe PRADOS
Conférences
• Java User Group
• Paris Android User Group
• DevFest (vidéo)
• Solution Linux
• SSTIC
Plus de 100 articles dans
• Linux Mag
• Programmez
• 01
• MISC
• … Philippe PRADOS
Deux livres @pprados
4. Petit rappel – Le GC c’est quoi ?
• Algorithme qui supprime les objets inutiles.
• Nécessite une période d’arrêt-du-monde
5. Ma conviction
Le ramasse-miettes ne sera
plus LA solution
6. La mort prochaine du GC ?
Intuitions
Preuves et constat
Nouvelles stratégies
Solutions alternatives
Prospectives
Polémiquons !
17. Il faut dépasser les limites
• Limites I/O
• Augmentation de mémoire
18. Avant 1981: 16 bits d’adresse
• 2 octets par adresse 65.536 cases mémoire tout compris
• Processeurs 8 bits 8 bits 8 bits
• Processeurs lents
• Impossible d’utiliser un GC
16 bits
• Mémoire à la main
19. Avant 1986 : 24 bits d’adresse
• 2 x 16 bits = 4 octets par 16 Mo
adresse
• Processeurs 16 bits 24 bits
• Processeurs lents
• Impossible d’utiliser un GC
• Mémoire à la main
20. Avant 2001 : 32 bits d’adresse – Cool
• 4 octets 4 Go théorique
• Processeurs très rapides 32 bits
• Super ! On peut utiliser un GC
• La mémoire est gérée
automatiquement
21. Maintenant: 64 bits d’adresse
• Maintenant, nous avons 256 tébioctets - 240
un problème
• 8 octets
• Processeurs aux limites 64 bits
Pour le moment, la mémoire de base permet de tenir
22. Coût des mémoires en baisse
Historical cost of computer memory and storage
• All in memory
possible
•
1980 : 5000$/MB
Évite l’ajout d’un
nœud
2010 : 100$/MB
23. Problèmes avec « All in memory » et GC
Objectif:
• Un accès direct aux objets persistants
• Algorithmes non orientés « secteur »
En réalité:
• Objets hors-heap
• Accès via sérialisation/désérialisation
• Accès orientés « zone mémoire »
Heap avec GC Hors-Heap sans GC
24. All-in-memory contre DB sur SSD ?
• Mort des disques
magnétiques dans 5 ans
• Swapfile sur SSD
• Indexations orienté objet en
mémoire.
• files systèmes avec
allocateur « mémoire »
31. Application interactives : moins de mémoire
• Plusieurs JVM par nœud
• Plusieurs VM par nœud
• Abandon des threads
• « share nothing »
• GC par thread dans la JVM ?
• Agents
• GC par Classloader ?
32. Application « memory based » : hors heap
• Utiliser du hors-heap
• Langage sans ramasse-miettes (C/C++, Objectif-C, etc.)
33. Plus radical : faute de page
• GC sans arrêt du monde (Azul)
• Patch/module kernel (que sur *nix !)
• Pendant le GC:
• Pages invalide
• Capture des faute de pages
• Patch l’adresse dans l’appelant et relance
• Page déclarée valide
35. Augmenter la sémantique pour les pointeurs
Immuable
Un pointeur est :
• Une relation ou une agrégation 1
vers un objet immuable Agrégation
•
simple
Une agrégation simple
• Une agrégation partagée
1
•
Immuable
Une relation
• Forte ?
• Faible ? 1
Immuable
36. Et les autres langages ?
• C++11 : shared_ptr, weak_ptr, unique_ptr et les
rvalue_references.
• « Automatic Counteur Reference » (Objective-C).
• Acteur (ER-Lang, Go, Scala)
• Isolation totale (Javascript ou Dart)
• Programmation fonctionnelle (Hashkell, Closure, Scala, etc.)
38. Où allons nous ?
Puissances DEFINITIVEMENT à saturation :
• ++Volume avec puissance égale
Big-memory :
• Sémantique forete des pointeurs
• Libération déterministe.
Multiplication des CPU :
• Agents distribués.
• Objets immuables.
Réseau :
• Peer-to-peer
39. Où allons nous ?
La mémoire de masse
• Sera statique
• Avec de gros volumes
Montage de la mémoire statique en RAM
• Plusieurs téra-octets en ligne et persistant !
40. Et pour nos JVM ?
• Java 9 ou 10 saura découper la mémoire en
tranche pour aider le GC ?
• Hors-heap sera la seule disponible ?
• @deprecated GC comme pour Objectif-C ?
• OS pour GC ?
• Changer de langage?
• Langages fonctionnels et à agents ?
41. Qu’en penser ?
Deux solutions :
• « Il est fort probable que cela arrivera »
• « Ce type est fou, il n’y a pas problème »
Rendez-vous dans 5 ans (ou avant)
42. Rappel des signaux faibles
• Intel prédit la fin de l’augmentation • > 8 Go => Dégradation
de puissance des processeurs
pour 2018 • @deprecated GC Objective-C !
• JVM 64 bits plus lent
• G1 est NECESSAIRE
• -XX:MaxDirectMemorySize=2G