Как дело в том, что он увеличивает использование памяти динамической формы, использовав соединенные списки?

Я приношу в настоящее время курс Структуры Данных в Java и занимаю знать, как ведет себя память.

Я не понимаю, какой изюм, когда хранится информация, уже был, когда ты говоришь ему Nodo Fin = null или inicio = siguiente или siguiente = fin.

Я понимаю все эти спецификации, но не знаю, что происходит.

Как он берет ссылки, если я хочу сохранять больше данных, например Integer и также один String?

Я иду хорошо путаемым с этим узлов и указателей, с этим соединенных списков и вдвойне соединенные.

1
задан 12.04.2016, 22:07
3 ответа
public boolean addDato(Object dato) { 
    Nodo nodoUltimo = getUltimoNodo(); 
    if(dato != null && nodoUltimo != null) { 
        nodoUltimo.setNodo(new Nodo(dato)); //New pide mas memoria para dato en un nuevo nodo
        tamaño ++; 
        return true; 
    }else{
        return false; 
    } 
}

Если ты делаешь Lista list = new Lista(); там ты просишь больше памяти, чтобы хранить list. Но если ты делаешь list=null; хотя контент списка остается в памяти уже терялась ссылка в list и пересборщик мусора java потребует память, когда он будет работать, и освободи память.

То же самое происходит, сделав Nodo Fin = null внутри внутреннего программирования списка.

Когда ты делаешь inicio = siguiente только ты продвигаешь узла заголовок в узел положение ноль.

Когда ты делаешь siguiente = fin означай, что ты находишься в последнем узле и тогда указываешь на это в null потому что там он заканчивает список.

Проверяет диаграмму коробков этой страницы и пониманий то, что я объясняю тебе. http://usandojava.blogspot.mx/2011/12/implementacion-de-una-lista-simple.html#sthash.cNm27jPo.dpuf

И помни, что что-то очень важное это java не c ++, здесь нет суфлеров, здесь суфлеры одинокий существуют в диаграммах ящиков, с которыми они объясняют тебе, как функционируют списки.

2
ответ дан 24.11.2019, 14:36

Я верю в то, что, что у тебя не остается ясный звук ассигнования указателей в различные узлы списка, например. Нужно осознавать, что указатели хранят место памяти (в dГіnde они обозначаются). Когда мы распределяем их в первый элемент списка например, что мы делаем, - это "указывать на это" в место памяти, где находится первый элемент списка.

Java манипулирует резервом и освобождением памяти из-за нас в отличие от языков как C. Когда мы делаем

List lista = new ArrayList();

, мы создаем новое место памяти, которую занимает новый ArrayList и lista, обозначься к вышеупомянутому месту.

2
ответ дан 24.11.2019, 14:36

Java не позволяет управление такой памяти как другие языки типа C или C ++, где ты размещаешь память, и кроме того можешь двигаться через размещенную память, реализовывать арифметику указателей и остальные вещи....

Виртуальная машина Java (JVM) осуществляет механизм названный Гарбахе Кольектор (GC), который реализует автоматическое управление памяти. Это GC, который размещает память, освобождает память в зависимости от неких критериев, и т.д.

Когда ты будешь верить в объект с чем-то как это:

String texto="Hola Mundo";

Ты никогда не будешь мочь размещать память для этой ссылки, не будешь знать, где не помещен ни ничто из этого стиля. Ты можешь призывать GC программной формы посредством призывов к System.gc () или Runtime.gc (), но он не гарантируется, когда он работал и то, что было удалено.

С другой стороны, если ты нуждаешься в структуре данных как батарейка, список, соединенный список, словарь или карта, и т.д. Java уже предлагает тебе основные осуществления этих структур, кроме того, как они основываются на неких интерфейсах, ты можешь делать твое собственное осуществление, если бы он был необходим.

Например, если ты ищешь в документации JDK интерфейс java.util. List ты можешь видеть классы, которые это осуществляют, и как они представляют различные структуры данных: Stack, Вектор, ArrayList, LinkedList, и т.д.

В конце концов, ты можешь осведомляться, что он происходит, если я например верю в столько объектов, которые истощила доступная память, если у меня нет контроля на управлении памяти, которая будет происходить...., хорошо, так как для этого Java позволяет тебе конфигурировать JVM для того, чтобы у него был максимальный размер доступной памяти и размер начальной памяти между другими. С этим главным образом dimensiona размер Heap и Permgen, использованный JVM, которая это зоны памяти, где помещены объекты.

Если иссякает память Heap или Permgen, случится ошибка типа java.lang. OutOfMemoryError. Это значит, или что у тебя есть проблема с объектами, которые никогда не освобождены, или что ты нуждаешься в большем количестве памяти для выполнения твоего приложения

Я воодушевляю тебя к тому, чтобы ты исследовал больше из-за твоего счета, тема дает для многого.

1
ответ дан 24.11.2019, 14:36

Теги

Похожие вопросы