Java и удаление

Тема в разделе "WASM.BEGINNERS", создана пользователем Luna, 14 ноя 2010.

  1. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Как в java удалять объекты?
    если при помощи ссылок, то каким образом???
     
  2. bredonius

    bredonius New Member

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

    sysexit New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2010
    Сообщения:
    176
    Да, я Java используется сборщик мусора, просто освободи объект и все, Object = null; или как там в яве?
     
  4. emptyHook

    emptyHook New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2010
    Сообщения:
    63
    a = null;
    System.gc();
     
  5. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Всем спасибо.
    попробую 3-й вариант)
     
  6. Luna

    Luna New Member

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

    emptyHook New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2010
    Сообщения:
    63
    Luna
    Чтобы объект можно было полностью удалить, на него не должно быть ссылок.
     
  8. sysexit

    sysexit New Member

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

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    я думала -"a=null" и есть отсутствие ссылки , не понимаю, как по-другому ликвидировать ссылку
    Ладно, удаление можно сделать с присваиванием пустой строки.


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

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Необходимо также еще во всех на объектах, использующих данный, установить указатель в null.
     
  11. emptyHook

    emptyHook New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2010
    Сообщения:
    63
    Luna

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

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

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

    Например:

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