Documente Academic
Documente Profesional
Documente Cultură
Memory patterns
Raliser par :
ABIDAR Lahcen Rcham Omar
Company LOGO
LOGO
Plan
Memory Patterns
Implmentation
www.themegallery.com
LOGO
Problmatique(Mmoire VS Pointeurs)
les pointeurs ne sont pas des objets, ils sont juste des donnes. les oprations primitives quon peut effectuer sur les pointeurs ne sont pas vrifies pour validit. nous sommes libres d'accder un pointeur mme si il n'a jamais t initialis ou aprs la mmoire vers lequel il pointe a t libr. Nous sommes galement libres de dtruire le pointeur sans librer la mmoire.
Memory Patterns
LOGO
Consquences(Mmoire VS Pointeurs)
Lassociation des objet laide des pointeurs est dficelle. Moine de contrle sur les pointeurs . Pas de vrification des pointeurs. Jaspage de la mmoire. Des perte de la mmoire qui n'est plus rfrenciable au systme.
Memory Patterns
LOGO
Exemple plus concret(Albert Einstein: If you can't explain it simply, you don't understand it) On suppose quon travail dans un grand organisme avec un logiciel dvelopper avec (C++ par exemple) en utilisant les pointeurs, Le logiciel a un problme, il dtruit des pointeurs sans dtruire les mmoires associer, Aprs un nombre donn des opration avec le logiciel, le pc se ralentie, et il devient impossible douvrir une autre fentre, On ferme le logiciel mais le pc reste bloquer On se rendre dans la fameuse GESTION DES TACHES on trouve la mmoire inactif 8% et les autres mmoire sont presque 0%,et les processus sont aussi suspendu (Libre).
LOGO
mmoires inaccessible ni par le systme, ni par le logiciel. Aprs un certaines temps la RAM ne support plus les donnes.
Memory Patterns
LOGO
LOGO
Implimentation dengereuse class Nothing { public: Nothing() { cout << "ctor\\n"; } ~Nothing() { cout << "dtor\\n"; } void SaySomething() { cout << "Something\\n"; } }; Premirement en considre cette fonction: void TestNothing() { Nothing \*myNothing = new Nothing(); myNothing->SaySomething(); }
LOGO
Memory Patterns
LOGO
Trop complexe pour permettre une allocation statique de tous les objets.
Memory Patterns
LOGO
Structure de pattern
Memory Patterns
LOGO
Structure de pattern
Tout objet dans le systme qui a besoin dutiliser un ou plusieurs objets de la classe RessourceClass
Memory Patterns
LOGO
Structure de pattern
-pooledClass: Spcifier la classe dobjets mise en commun. -BufferSize: Spcifier le nombre dentre eux crer.
Memory Patterns
LOGO
Structure de pattern
Memory Patterns
LOGO
Structure de pattern
Memory Patterns
LOGO
Memory Patterns
LOGO
Implmentation import java.util.*; class BusMessage { private String s; }; class PoolEmpty extends Exception { }; public class BusMessagePool{ private LinkedList freeList = new LinkedList();
Memory Patterns
LOGO
Implmentation
};
Memory Patterns
LOGO
Implmentation public BusMessage allocate() throws PoolEmpty { BusMessage B; if (freeList.size() > 0) { B = (BusMessage) freeList.getFirst(); freeList.removeFirst(); return B; } else { throw new PoolEmpty(); }; };
Memory Patterns
LOGO
Implmentation
Memory Patterns
Company LOGO