Es una mala práctica de asignar una nueva matriz a una matriz existente a 'clara' la matriz en Java?

Yuxie:

Así que estoy actualmente trabajando en un programa que tiene que ser capaz de hacer frente a una gran cantidad de datos almacenados en las matrices y necesita un método para limpiar todo en la matriz. Para el siguiente ejemplo, esto sería un mal que hay que hacer memoria sabia? Sé que el recolector de basura finalmente limpiarlo para usted, pero hay una razón por qué otro método (por ejemplo un bucle y ajustar cada valor dentro de nulo) podría ser mejor que esto?

Object[] objArray = new Object[n];
/*Do some stuff with objArray*/
objArray = new Object[n]

Si no, haciendo esto permitirá que esta operación se ejecute en O (1) tiempo vs un bucle que tomaría O (n).

Bohemia:

Es una mala práctica.

En primer lugar, la asignación de una nueva matriz a la variable no tiene realmente nada “claro” fuera (más sobre esto más adelante).

Esta es la mejor práctica:

objArray = null;

que hace que el inalcanzable matriz original y por lo tanto será (con el tiempo) basura recogida.

También se evita una asignación innecesaria de memoria de la creación de la matriz vacía que utilizó para reemplazar el anterior.

Sin embargo, ninguna de estas opciones “borra” fuera de la matriz original, que pueden suponer una, aunque, la exposición pequeña de seguridad. Hasta basura recogida, el contenido de la matriz pueden ser divinable si el contenido de memoria se vierten etc.

La verdad despejar la matriz:

Arrays.fill(objArray, null);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=175883&siteId=1
Recomendado
Clasificación