web-dev-qa-db-fra.com

Mémoire libre d'un tableau d'octets dans Java

Quelle est la meilleure façon de libérer de la mémoire allouée par un tableau d'octets (nouvel octet [taille] en Java)?

21
fdezjose

Arrêtez de le référencer.

54

Lorsque vous créez un nouvel octet [] en Java, vous faites quelque chose comme

byte[] myArray = new byte[54];

Pour le libérer, vous devez faire

myArray = null;

Si quelque chose d'autre fait référence à votre tableau d'octets, comme

yourArray = myArray;

vous devez également définir les autres références sur null, comme ceci

yourArray = null;

Dans Java garbage collection est automatique. Si la JVM peut détecter qu'un morceau de mémoire n'est plus accessible par l'ensemble du programme, alors la JVM libérera la mémoire pour vous.

14
Edwin Buck

Suppression de toute la référence à ce tableau d'octets. Le ramasse-miettes s'occupe du reste.

6
HoLyVieR

Si vous lui attribuez la valeur null, toutes les références en feront un candidat au ramasse-miettes automatique de Java. Vous ne pouvez pas être sûr du temps qu'il faudra pour que cela se produise. Si vous avez vraiment besoin de récupérer explicitement la mémoire immédiatement, vous pouvez appeler System.gc();

De plus, pour effacer, vous n'aurez peut-être pas besoin de définir explicitement les références à null. Si les références sortent du domaine, elles sont automatiquement annulées, par exemple une référence de variable locale sera annulée une fois que la méthode dans laquelle elle est déclarée termine son exécution. Les variables locales sont donc généralement publiées implicitement tout le temps pendant l'exécution d'une application.

2
Alb