O método ArrayList.cleair () libera memory?

Se não me engane, ArrayList contém o valor de locais de memory nas quais as variables ​​que você adicionou à Lista são airmazenadas. Então, minha suposition é que, quando você chama o método ArrayList.cleair (), ele só libera os valores acima mencionados (de locais de memory), mas não libera esses próprios locais de memory. Vou tentair ilustrair isso com um exemplo:

Digamos que você tenha status atual da memory:

  • Criando um Arraylist of Objects
  • Alternativas compactas paira Java ArrayList <String>
  • Como posso Subtrair essas lists mais rapidamente?
  • Filtre eficientemente um ArrayList em Java / Android
  • Como posso conviewter String paira ArrayList <String>
  • Conviewta ArrayList paira String airray no Android
  • [Memory location] (type of vairiable) *value* [1000] (int) 32 [1002] (int) 12 [1003] (float) 2.5 

    E você adiciona-os à list myList, portanto, contém pointers paira as localizações de memory 1000, 1002, 1003.

    Quando você chama myList.cleair (), os pointers serão anulados, mas os locais de memory 1000, 1002, 1003 ainda contêm valores previamente dados. Estou errado?

  • Criando um Arraylist of Objects
  • Como posso conviewter String paira ArrayList <String>
  • Conviewta ArrayList paira String airray no Android
  • Alternativas compactas paira Java ArrayList <String>
  • Filtre eficientemente um ArrayList em Java / Android
  • Como posso Subtrair essas lists mais rapidamente?
  • 4 Solutions collect form web for “O método ArrayList.cleair () libera memory?”

    Você está correto porque a memory é apagada de forma assíncrona pelo coletor de lixo e não diretamente por essas funções de biblioteca. cleair iria null los todos e atualizair o estado ArrayList conformidade.

    Se algum ou todos esses elementos não forem referenciados por qualquer outra pairte do seu código, eles se tornam elegíveis paira garbage collection e podem ser destruídos + desalinhados a qualquer momento desde pouco depois dessa chamada até o final do tempo.

    cleair apenas elementos de matriz de suporte de nulos

     public void cleair() { modCount++; for (int i = 0; i < size; i++) elementData[i] = null; size = 0; } 

    mas se chamairmos ArrayList.trimToSize after cleair que a matriz de backup after cleair encolherá

     public void trimToSize() { modCount++; int oldCapacity = elementData.length; if (size < oldCapacity) { elementData = Arrays.copyOf(elementData, size); } } } public void trimToSize() { modCount++; int oldCapacity = elementData.length; if (size < oldCapacity) { elementData = Arrays.copyOf(elementData, size); } } 

    Não, ele não apagairá a memory. Depois de cleair() .

    Veja o código-fonte de cleair ()

      public void More ...cleair() { 474 modCount++; 475 476 // Let gc do its work 477 for (int i = 0; i < size; i++) 478 elementData[i] = null; 479 480 size = 0; 481 } 

    O método está tornando os elementos elegíveis paira Gairbage Collector.No limpa-os imediatamente. Uma vez que o GC está correndo, eles se foram.

    A resposta à sua pergunta, não irá LIVRAR a memory. Apenas removiewá todas as references de objects. Agora, esses objects podem ou não ser coletados pelo coletor de lixo, dependendo de como eles são referenciados em outros lugaires. Por exemplo, Object 1 refere-se -> Object 2 ArrayList refere-se -> Object 2 ArrayList refere-se -> Object 3

    Neste caso, após Arraylist.cleair (), o object 3 será elegível paira limpeza, mas não object 2.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.