Как сначала, а затем прочитайте, Брат Нэн поможет вам получить более половины ваших навыков Java.
существовать2006Сан-Франциско, КалифорнияJavaOne
на конференции,Ежегодный семинар с ведущими Java-разработчиками,Sun Microsystems
Компания неожиданно объявила, что откроетJavaисходный код。затем,Лучшие проекты следующего годаOpenJDK
рождение。
Открылись новые возможности для разработки сборщика мусора G1 в экосистеме Java, выражений Lambda в Java 8 и потокового API...
Привет всем, я брат Нэн.
Будучи лидером в изучении и развитии Java, я считаю, что вам будет полезно пройти собеседование и получить предложение о работе в той компании, которую вы хотите.
По сравнению с нашими братьями, говорящими на языке C, мы, программисты на Java,,Ребята, вам не нужно писать вещи по управлению памятью.。Что конкретно??Не нужно писать громоздкий код для каждого объектасвободная памятькод。
Ниже приведен пример языка C.,CЯзык необходимо использовать явноfree
функционировать, чтобысвободная память。
#include <stdio.h>
#include <stdlib.h>
int main() {
// Выделить память для хранения целого числа
int *ptr = malloc(sizeof(int));
if (ptr == NULL) {
printf("Ошибка выделения памяти\n");
return 1;
}
// Использовать выделенную память
*ptr = 123;
printf("Сохраненное целое число: %d\n", *ptr);
// После окончания использования свободная память
free(ptr);
return 0;
}
Мы предоставили виртуальной машине JVM самые важные полномочия по управлению памятью. Необходимо узнать больше о том, как виртуальная машина JVM управляет памятью, в том числе о том, что содержит область памяти JVM. В противном случае, если произойдет онлайн-неисправность, это произойдет. решим без понимания принципа. Идей нет.
Структура памяти JVM состоит из пяти частей: кучи памяти, стека локальных методов, стека виртуальной машины, области методов и счетчика программ. Брат Нэн нарисует картинки, которые помогут вам лучше понять.
Функция памяти Куча легко запоминается.,Его единственная цель — хранить экземпляры объектов.。переменные-членыЗначение переменной имеет базовый тип、Или ссылочные типы сохраняютсясуществовать Куча памятисередина,илокальные переменныезначение переменнойесли Если это ссылочный тип, он сохраняетсясуществовать Куча память середина. Брат Маннан продолжит говорить об этом.
public class JavaSouth {
// переменные-члены: в Куча хранятся как базовые типы, так и ссылочные типы. памятисередина private int memberInt = 10;
// переменные-члены: в Куча хранятся как базовые типы, так и ссылочные типы. памятисередина private String memberString = "Hello, World!";
public void displayInfo() {
// локальные переменные:если является ссылочным типом и хранится в Куча памятисередина String localString = new String("Local String");
System.out.println("Member int: " + memberInt);
System.out.println("Member String: " + memberString);
System.out.println("Local String: " + localString);
}
}
Куча памяти JVM в стране также называется кучей GC. Говоря о переработке GC, в настоящее время основные сборщики мусора используют алгоритмы сборки поколений, а куча GC делится на новое поколение и старое поколение.
В новом и старом поколениях используются разные алгоритмы сбора мусора. Например, характеристики объектов в новом поколении — короткое время выживания, что больше подходит для алгоритма копирования, который делит память на две части; объектов в старом поколении относительно длинны. Различные большие и маленькие объекты также относительно сложны, и можно использовать алгоритмы очистки меток и алгоритмы сортировки меток. Они упомянуты в главе «Сбор мусора JVM».
виртуальная машинакучаесть иJavaсерединаизметодсоответствующий,Поскольку каждый метод при выполнении потока,создам одинстек кадров,Следовательно, жизненный цикл виртуальной машины такой же, как и у потока.,Виртуальные машины также являются потокоприватными.
Кадр стека виртуальной машины включает в себя следующие элементы: таблицу локальных переменных, стек операндов, динамическую ссылку и адрес возврата метода. Трудно ли запомнить? Брат Нэн думает так.
существоватьОфициальная документация Oracleсередина,мы можем научитьсявиртуальная машинакуча Всего будет сообщеноStackOverflowError
、OutOfMemoryError
Две аномалии。
If the computation in a thread requires a larger Java Virtual Machine stack than is permitted, the Java Virtual Machine throws a
StackOverflowError
. If Java Virtual Machine stacks can be dynamically expanded, and expansion is attempted but insufficient memory can be made available to effect the expansion, or if insufficient memory can be made available to create the initial Java Virtual Machine stack for a new thread, the Java Virtual Machine throws anOutOfMemoryError
.
Переведено.
StackOverflowError
,То есть куча переполняется.OutOfMemoryError
,То есть переполнение памяти.Функции стека локальных методов и стека виртуальной машины мало чем отличаются. Они оба предоставляют кадр стека для выполнения методов. Как мы все знаем, Java использует собственные методы языка C для многих операций, таких как математические вычисления и системные вызовы. Эти локальные методы также называются собственными методами.
Брат Нэн предоставил фрагмент кода метода Native, реализованного на языке C.
Ниже приведен внутренний метод класса String, который использует локальный метод.
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/**
* Возвращает каноническое представление строкового объекта.
*/
public native String intern();
}
Следуя вышесказанному Брату Нэну, мы знаем, что стек виртуальной машины и стек локальных методов предоставляют кадры стека, а куча памяти обеспечивает область памяти. Фактически, область метода также играет роль области памяти. В области метода хранятся данные, связанные с классом: информация о структуре класса, константы, статические переменные и т. д.
существоватьОфициальная документация Oracleсередина,мы можем знатьметодпоявляется конференцияOutOfMemoryError
аномальный。
If memory in the method area cannot be made available to satisfy an allocation request, the Java Virtual Machine throws an
OutOfMemoryError
.
Если в области метода недостаточно памяти для удовлетворения запроса на выделение, то Java виртуальная машинаброситOutOfMemoryError
。
счетчик программ Основная функция — сохранить указатель натекущая тематолькосуществоватьосуществлятьизJVMадрес инструкции。
исчетчик программа в целом памяти JVMсередина,единственный, кто не появитсяOutOfMemoryError
область。
Брат Нэн упомянул выше, что именно хранится в куче памяти и области методов. Теперь разберемся с именами переменных и местами хранения значений переменных для различных переменных Java.
Этот момент будет раскрыт, если интервьюер будет внимателен.
Я Брат Нэн, Нэн — это Нэн. Я нашла ваши интересные комментарии на Get➕Like➕Follow.
Творить непросто, поэтому вы можете ставить лайки, собирать и подписываться, чтобы поддержать его. Ваша поддержка — самая большая мотивация для моего творчества.❤️