Bonjour,
Je voudrais vous poser une question. en java on ne libère pas la mémoire, est-ce qu'on peut l'allouer ?? (équivalent de l'utulisation du malloc et new )
Merci
Version imprimable
Bonjour,
Je voudrais vous poser une question. en java on ne libère pas la mémoire, est-ce qu'on peut l'allouer ?? (équivalent de l'utulisation du malloc et new )
Merci
Salut,
Heu...
Code:new Object();
a++
Il n'y a pas de malloc, mais le new est omniprésent. Il sert à construire :
- soit un nouvel objet, ce qui entre autre alloue la mémoire nécessaire pour le stocker.
- soit un tableau, ce qui alloue assez de mémoire pour contenir un tableau de la taille indiquée contenant le type indiqué.
Code:
1
2 Date date = new Date(); byte[] buffer = new byte[4096];
Merci bcp
"on ne libère pas la mémoire" > ce n'est pas tout à fait vrai. On ne libère pas explicitement la mémoire serait plus juste, car le "garbage collector" effectue bien des libérations de mémoire allouée.
Note : on peut appeler explicitement le GC mais cela est très fortement déconseillé dans 99,9% des cas.
L'allocation de mémoire s'obtient avec la commande "new" : la création d'un nouvel objet alloue la mémoire dont il a besoin.
D'ailleurs, sur certains types complexes (les collections d'objets en particulier), on peut spécifier au constructeur la taille envisagée pour la collection, afin d'optimiser la quantité de mémoire allouée.
[Edit]Erf... grillé depuis longtemps :s[/Edit]
et dans le cas où on veux réallouer la mémoire (utilisation de realloc) ??
Salut,
Si tu as besoin d'un tableau dynamique, tu vas plutot utiliser un arraylist et donc tu n'as pas besoin de gérer la mémoire.
a+,
Il n'y a pas de realloc en java : les tableaux ont une taille fixe.Citation:
et dans le cas où on veux réallouer la mémoire (utilisation de realloc) ??
Si tu veux un tableau de taille variable, il faut utiliser les collections a la place (par exemple ArrayList) qui gèrent les allocations de manière transparente.