1

So I compiled this code and decompiled it into bytecode:

System.out.println("hi");

compiles to:

getstatic
ldc
invokevirtual

From what I can see here, the literal value "hi" isn't explicitly stored in any bytecode format, so does a .class file also contain a hidden representaion of a stack for that program. For example when I compiled that program would the .class file contain that bytecode, and a heap data structure containing the literal value "hi". And more generally, does a .class file contain more than just bytecode (e.g. a representation of the heap, stack and registers). thanks!

GBlodgett
  • 12,704
  • 4
  • 31
  • 45

1 Answers1

3

Constants are stored in seperate parts of class files than bytecode, called Constant Pools. You can find more information about them here: What is the purpose of the Java Constant Pool?

The class file format is publicly available in Java Virtual Machine Specification

yachoor
  • 929
  • 1
  • 8
  • 18