10
void someMethod() {
  byte[] array = { 0, 0 };
}

Will this array be stored in heap or on the stack?

2 Answers 2

18

You can think of it as always going on the heap.

I believe some smart VMs are able to stack-allocate objects if they can detect it's safe - but conceptually it's on the heap. In particular, all array types are reference types (even if the element type is primitive), so the array variable (which is on the stack) is just a reference to an object, and objects normally go on the heap.

In particular, imagine a small change:

byte[] someMethod() { 
    byte[] array = { 0, 0 };
    return array;
}

If the array were allocated on the stack, what would the returned reference have to refer to?

Sign up to request clarification or add additional context in comments.

Comments

2

It will be stored in the heap

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.