Java и удаление

Discussion in 'WASM.BEGINNERS' started by Luna, Nov 14, 2010.

  1. Luna

    Luna New Member

    Blog Posts:
    0
    Как в java удалять объекты?
    если при помощи ссылок, то каким образом???
     
  2. bredonius

    bredonius New Member

    Blog Posts:
    0
    насколько я знаю, никак. в java для этого есть garbage collector, который сам решает, когда удалять объекты и удалять ли их вообще.
     
  3. sysexit

    sysexit New Member

    Blog Posts:
    0
    Да, я Java используется сборщик мусора, просто освободи объект и все, Object = null; или как там в яве?
     
  4. emptyHook

    emptyHook New Member

    Blog Posts:
    0
    a = null;
    System.gc();
     
  5. Luna

    Luna New Member

    Blog Posts:
    0
    Всем спасибо.
    попробую 3-й вариант)
     
  6. Luna

    Luna New Member

    Blog Posts:
    0
    Code (Text):
    1. a = null;
    2. System.gc();
    Почему в результате работы этого куска кода объект не удаляется, а его значение просто меняется на null???
    может, надо что-то подключить?
     
  7. emptyHook

    emptyHook New Member

    Blog Posts:
    0
    Luna
    Чтобы объект можно было полностью удалить, на него не должно быть ссылок.
     
  8. sysexit

    sysexit New Member

    Blog Posts:
    0
    Почитайте о Java, а лучше о сборщике мусора, там описана концепция этого механизма.
     
  9. Luna

    Luna New Member

    Blog Posts:
    0
    я думала -"a=null" и есть отсутствие ссылки , не понимаю, как по-другому ликвидировать ссылку
    Ладно, удаление можно сделать с присваиванием пустой строки.


    Как при помощи ссылок в java создать метод по добавлению нового объекта в массив объектов(например,-новый номер в справочник) ? что делать с длиной массива, ведь её никак не увеличишь?
     
  10. Microedition

    Microedition Active Member

    Blog Posts:
    0
    Необходимо также еще во всех на объектах, использующих данный, установить указатель в null.
     
  11. emptyHook

    emptyHook New Member

    Blog Posts:
    0
    Luna

    Простой пример, создаем объект и список, добавляем объект в список, после чего объекту присваиваем null. В данном примере объект не будет удален. Чтоб удалить объект полностью, его нужно сначала удалить из списка, после чего присвоить объекту значение null.

    Есть еще несколько методов как этого избежать, например через WeakReference или SoftReference.

    Последний вопрос не понял. Но предполагаю что решением является использование не массива, а Списков или Мэпов.

    Например:

    Code (Text):
    1. private List<String> list = new ArrayList<String>();
    2.  
    3. list.add("1");
    4. list.add("2");
    5. list.add("3");