Heap & Stack JavaStack и Heap в JavaКак побороть JavaFX application class must extend...
Heap & Stack Java
Stack и Heap в JavaКак побороть JavaFX application class must extend javafx.application.ApplicationВопрос о heap memory в JavaНе работает regex JavaСоздание объекта класса внутри него же самогоОшибка - main method not found in classпочему Java stack memory быстрее heapНужно полностью обновить SQLite базу данных при повышении версии кода приложенияПроблемы с созданием апплета на javaIDEA запуск кода | ошибка Error: Main method not found in class com.company.Main
Я знаю, что ссылки на объекты создаются в памяти стека а сами объекты в куче. В коде ниже я пытаюсь переполнить кучу создавая большое количество объектов Main(), используя зацикленность в конструкторе, и вместо outOfMemoryError получаю stackOverflow.
public class Main {
public Main() {
new Main();
}
public static void main(String[] args) {
new Main();
}
}
Почему? Как мне переполнить кучу?
java
|
показать ещё 2 комментария
Я знаю, что ссылки на объекты создаются в памяти стека а сами объекты в куче. В коде ниже я пытаюсь переполнить кучу создавая большое количество объектов Main(), используя зацикленность в конструкторе, и вместо outOfMemoryError получаю stackOverflow.
public class Main {
public Main() {
new Main();
}
public static void main(String[] args) {
new Main();
}
}
Почему? Как мне переполнить кучу?
java
1
Стек намного меньше кучи.
– Кирилл Малышев
13 мар в 19:50
сделайте так, чтобы один объект съедал 100мб
– Stranger in the Q
13 мар в 19:51
1
Вот, например OutOfMemoryError ideone.com/XjmuMf
– Кирилл Малышев
13 мар в 19:52
@Кирилл а чем я в моем случае так переполняет стек?
– CapitaNemo
13 мар в 19:59
1
аватарка у Вас - огнище
– Stranger in the Q
13 мар в 21:12
|
показать ещё 2 комментария
Я знаю, что ссылки на объекты создаются в памяти стека а сами объекты в куче. В коде ниже я пытаюсь переполнить кучу создавая большое количество объектов Main(), используя зацикленность в конструкторе, и вместо outOfMemoryError получаю stackOverflow.
public class Main {
public Main() {
new Main();
}
public static void main(String[] args) {
new Main();
}
}
Почему? Как мне переполнить кучу?
java
Я знаю, что ссылки на объекты создаются в памяти стека а сами объекты в куче. В коде ниже я пытаюсь переполнить кучу создавая большое количество объектов Main(), используя зацикленность в конструкторе, и вместо outOfMemoryError получаю stackOverflow.
public class Main {
public Main() {
new Main();
}
public static void main(String[] args) {
new Main();
}
}
Почему? Как мне переполнить кучу?
java
java
задан 13 мар в 19:34
CapitaNemoCapitaNemo
1305
1305
1
Стек намного меньше кучи.
– Кирилл Малышев
13 мар в 19:50
сделайте так, чтобы один объект съедал 100мб
– Stranger in the Q
13 мар в 19:51
1
Вот, например OutOfMemoryError ideone.com/XjmuMf
– Кирилл Малышев
13 мар в 19:52
@Кирилл а чем я в моем случае так переполняет стек?
– CapitaNemo
13 мар в 19:59
1
аватарка у Вас - огнище
– Stranger in the Q
13 мар в 21:12
|
показать ещё 2 комментария
1
Стек намного меньше кучи.
– Кирилл Малышев
13 мар в 19:50
сделайте так, чтобы один объект съедал 100мб
– Stranger in the Q
13 мар в 19:51
1
Вот, например OutOfMemoryError ideone.com/XjmuMf
– Кирилл Малышев
13 мар в 19:52
@Кирилл а чем я в моем случае так переполняет стек?
– CapitaNemo
13 мар в 19:59
1
аватарка у Вас - огнище
– Stranger in the Q
13 мар в 21:12
1
1
Стек намного меньше кучи.
– Кирилл Малышев
13 мар в 19:50
Стек намного меньше кучи.
– Кирилл Малышев
13 мар в 19:50
сделайте так, чтобы один объект съедал 100мб
– Stranger in the Q
13 мар в 19:51
сделайте так, чтобы один объект съедал 100мб
– Stranger in the Q
13 мар в 19:51
1
1
Вот, например OutOfMemoryError ideone.com/XjmuMf
– Кирилл Малышев
13 мар в 19:52
Вот, например OutOfMemoryError ideone.com/XjmuMf
– Кирилл Малышев
13 мар в 19:52
@Кирилл а чем я в моем случае так переполняет стек?
– CapitaNemo
13 мар в 19:59
@Кирилл а чем я в моем случае так переполняет стек?
– CapitaNemo
13 мар в 19:59
1
1
аватарка у Вас - огнище
– Stranger in the Q
13 мар в 21:12
аватарка у Вас - огнище
– Stranger in the Q
13 мар в 21:12
|
показать ещё 2 комментария
1 ответ
1
текущие
по дате публикации
голоса
На каждый вызов функции в памяти выделяется кусок стека. В нём хранятся адрес возврата в вызывающую функцию, локальные ссылки, примитивные переменные и, возможно, другая служебная информация. При выходе из функции стек очищается. Но из-за рекурсии вы не выходите из функции, пока не перестанете вызывать функцию саму из себя. Соответственно, размер стека стремительно растёт и возникает его переполнение.
Чтобы добиться ошибки OutOfMemoryError
, объекты должны занимать в памяти слишком много места. Обычно эта ошибка возникает либо из-за выделения слишком большого куска памяти (например, огромный массив)
static int[] arr = new int[1000000000];
либо из-за утечек памяти.
Как правило, размер стека намного меньше размера кучи. Если размер стека обычно измеряют мегабайтами или десятками мегабайт, то размер кучи может достигать сотен мегабайт или нескольких гигабайт. Именно поэтому, у вас программа падает с ошибкой StackOverflowError
.
сразу бы так ответили, а не в комментариях, теперь понял, спасибо вам)
– CapitaNemo
13 мар в 20:58
добавить комментарий |
Ваш ответ
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "609"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "на платформе u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "Пользовательский контент попадает под действие u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003eлицензии cc by-sa 3.0u003c/au003e с u003ca href="https://stackoverflow.com/legal/content-policy"u003eуказанием ссылки на источникu003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Зарегистрируйтесь или войдите
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Необходима, но никому не показывается
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fru.stackoverflow.com%2fquestions%2f956181%2fheap-stack-java%23new-answer', 'question_page');
}
);
Отправить без регистрации
Необходима, но никому не показывается
1 ответ
1
текущие
по дате публикации
голоса
1 ответ
1
текущие
по дате публикации
голоса
текущие
по дате публикации
голоса
текущие
по дате публикации
голоса
На каждый вызов функции в памяти выделяется кусок стека. В нём хранятся адрес возврата в вызывающую функцию, локальные ссылки, примитивные переменные и, возможно, другая служебная информация. При выходе из функции стек очищается. Но из-за рекурсии вы не выходите из функции, пока не перестанете вызывать функцию саму из себя. Соответственно, размер стека стремительно растёт и возникает его переполнение.
Чтобы добиться ошибки OutOfMemoryError
, объекты должны занимать в памяти слишком много места. Обычно эта ошибка возникает либо из-за выделения слишком большого куска памяти (например, огромный массив)
static int[] arr = new int[1000000000];
либо из-за утечек памяти.
Как правило, размер стека намного меньше размера кучи. Если размер стека обычно измеряют мегабайтами или десятками мегабайт, то размер кучи может достигать сотен мегабайт или нескольких гигабайт. Именно поэтому, у вас программа падает с ошибкой StackOverflowError
.
сразу бы так ответили, а не в комментариях, теперь понял, спасибо вам)
– CapitaNemo
13 мар в 20:58
добавить комментарий |
На каждый вызов функции в памяти выделяется кусок стека. В нём хранятся адрес возврата в вызывающую функцию, локальные ссылки, примитивные переменные и, возможно, другая служебная информация. При выходе из функции стек очищается. Но из-за рекурсии вы не выходите из функции, пока не перестанете вызывать функцию саму из себя. Соответственно, размер стека стремительно растёт и возникает его переполнение.
Чтобы добиться ошибки OutOfMemoryError
, объекты должны занимать в памяти слишком много места. Обычно эта ошибка возникает либо из-за выделения слишком большого куска памяти (например, огромный массив)
static int[] arr = new int[1000000000];
либо из-за утечек памяти.
Как правило, размер стека намного меньше размера кучи. Если размер стека обычно измеряют мегабайтами или десятками мегабайт, то размер кучи может достигать сотен мегабайт или нескольких гигабайт. Именно поэтому, у вас программа падает с ошибкой StackOverflowError
.
сразу бы так ответили, а не в комментариях, теперь понял, спасибо вам)
– CapitaNemo
13 мар в 20:58
добавить комментарий |
На каждый вызов функции в памяти выделяется кусок стека. В нём хранятся адрес возврата в вызывающую функцию, локальные ссылки, примитивные переменные и, возможно, другая служебная информация. При выходе из функции стек очищается. Но из-за рекурсии вы не выходите из функции, пока не перестанете вызывать функцию саму из себя. Соответственно, размер стека стремительно растёт и возникает его переполнение.
Чтобы добиться ошибки OutOfMemoryError
, объекты должны занимать в памяти слишком много места. Обычно эта ошибка возникает либо из-за выделения слишком большого куска памяти (например, огромный массив)
static int[] arr = new int[1000000000];
либо из-за утечек памяти.
Как правило, размер стека намного меньше размера кучи. Если размер стека обычно измеряют мегабайтами или десятками мегабайт, то размер кучи может достигать сотен мегабайт или нескольких гигабайт. Именно поэтому, у вас программа падает с ошибкой StackOverflowError
.
На каждый вызов функции в памяти выделяется кусок стека. В нём хранятся адрес возврата в вызывающую функцию, локальные ссылки, примитивные переменные и, возможно, другая служебная информация. При выходе из функции стек очищается. Но из-за рекурсии вы не выходите из функции, пока не перестанете вызывать функцию саму из себя. Соответственно, размер стека стремительно растёт и возникает его переполнение.
Чтобы добиться ошибки OutOfMemoryError
, объекты должны занимать в памяти слишком много места. Обычно эта ошибка возникает либо из-за выделения слишком большого куска памяти (например, огромный массив)
static int[] arr = new int[1000000000];
либо из-за утечек памяти.
Как правило, размер стека намного меньше размера кучи. Если размер стека обычно измеряют мегабайтами или десятками мегабайт, то размер кучи может достигать сотен мегабайт или нескольких гигабайт. Именно поэтому, у вас программа падает с ошибкой StackOverflowError
.
ответ дан 13 мар в 20:50
Кирилл МалышевКирилл Малышев
5,3151420
5,3151420
сразу бы так ответили, а не в комментариях, теперь понял, спасибо вам)
– CapitaNemo
13 мар в 20:58
добавить комментарий |
сразу бы так ответили, а не в комментариях, теперь понял, спасибо вам)
– CapitaNemo
13 мар в 20:58
сразу бы так ответили, а не в комментариях, теперь понял, спасибо вам)
– CapitaNemo
13 мар в 20:58
сразу бы так ответили, а не в комментариях, теперь понял, спасибо вам)
– CapitaNemo
13 мар в 20:58
добавить комментарий |
Спасибо за ваш ответ на Stack Overflow на русском!
- Пожалуйста, убедитесь, что публикуемое сообщение отвечает на поставленный вопрос. Предоставьте как можно больше деталей, расскажите про проведенное исследование!
Но избегайте …
- Просьб помощи, уточнений или ответов на темы не относящиеся к вопросу.
- Ответов основанных на мнениях; приводите аргументы основанные только на реальном опыте.
Также, обратите внимание на заметку в справочном центре о том, как писать ответы.
Зарегистрируйтесь или войдите
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Необходима, но никому не показывается
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fru.stackoverflow.com%2fquestions%2f956181%2fheap-stack-java%23new-answer', 'question_page');
}
);
Отправить без регистрации
Необходима, но никому не показывается
Зарегистрируйтесь или войдите
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Необходима, но никому не показывается
Зарегистрируйтесь или войдите
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Необходима, но никому не показывается
Зарегистрируйтесь или войдите
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Необходима, но никому не показывается
Необходима, но никому не показывается
Необходима, но никому не показывается
Необходима, но никому не показывается
Необходима, но никому не показывается
Необходима, но никому не показывается
Необходима, но никому не показывается
Необходима, но никому не показывается
Необходима, но никому не показывается
1
Стек намного меньше кучи.
– Кирилл Малышев
13 мар в 19:50
сделайте так, чтобы один объект съедал 100мб
– Stranger in the Q
13 мар в 19:51
1
Вот, например OutOfMemoryError ideone.com/XjmuMf
– Кирилл Малышев
13 мар в 19:52
@Кирилл а чем я в моем случае так переполняет стек?
– CapitaNemo
13 мар в 19:59
1
аватарка у Вас - огнище
– Stranger in the Q
13 мар в 21:12