void someMethod() {
byte[] array = { 0, 0 };
}
この配列はヒープまたはスタックに格納されますか?
void someMethod() {
byte[] array = { 0, 0 };
}
この配列はヒープまたはスタックに格納されますか?
常にヒープ上にあると考えることができます。
一部のスマート VM は、安全であることを検出できればオブジェクトをスタック割り当てできると思いますが、概念的にはヒープ上にあります。特に、すべての配列型は (要素型がプリミティブであっても) 参照型であるため、array
(スタック上にある) 変数は単なるオブジェクトへの参照であり、オブジェクトは通常ヒープに置かれます。
特に、小さな変更を想像してみてください。
byte[] someMethod() {
byte[] array = { 0, 0 };
return array;
}
配列がスタックに割り当てられた場合、返された参照は何を参照する必要がありますか?
ヒープに格納されます