Рубрики

Как объекты Java хранятся в памяти?

В Java все объекты динамически размещаются в Heap. Это отличается от C ++, где объектам может быть выделена память либо в стеке, либо в куче. В C ++, когда мы размещаем объект с помощью new (), объект размещается в Heap, в противном случае в стеке, если не глобальный или статический.

В Java, когда мы объявляем только переменную типа класса, создается только ссылка (память не выделяется для объекта). Чтобы выделить память для объекта, мы должны использовать new (). Таким образом, объекту всегда выделяется память в куче (см. Это для более подробной информации).

Например, следующая программа не работает в процессе компиляции. Компилятор выдает ошибку «Ошибка здесь, потому что t не инициализирован».

class Test {

  
// содержание класса

void show()

{

    System.out.println("Test::show() called");

}
}

  

public class Main {

  

        // Код драйвера

    public static void main(String[] args) 

    {

        Test t; 

          

        // Ошибка здесь, потому что т

        // не инициализируется

        t.show(); 

    }

}

Выделение памяти с помощью new () заставляет вышеуказанную программу работать.

class Test {

      
// содержание класса

void show() 

{

    System.out.println("Test::show() called");

}
}

  

public class Main {

      

    // Код драйвера

    public static void main(String[] args)

    {

          

        // все объекты динамически

        // выделено

        Test t = new Test(); 

        t.show(); // Нет ошибок

    }

}

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Как объекты Java хранятся в памяти?

0.00 (0%) 0 votes