Java и удаление

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

  1. Luna

    Luna New Member

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

    bredonius New Member

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

    sysexit New Member

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

    emptyHook New Member

    Blog Posts:
    0
    Joined:
    Sep 9, 2010
    Messages:
    63
    a = null;
    System.gc();
     
  5. Luna

    Luna New Member

    Blog Posts:
    0
    Joined:
    Nov 7, 2009
    Messages:
    288
    Всем спасибо.
    попробую 3-й вариант)
     
  6. Luna

    Luna New Member

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

    emptyHook New Member

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

    sysexit New Member

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

    Luna New Member

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


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

    Microedition Active Member

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

    emptyHook New Member

    Blog Posts:
    0
    Joined:
    Sep 9, 2010
    Messages:
    63
    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");