java虚拟机的内存分配可表示为如图: T1/T2/T3/T4表示四个线程,F1/F2之间表示为F1方法调用F2方法所产生的帧。方法区中存放着各个类的:运行时常量池、变量、方法数据、构造方法、以及参与各种方法的初始化工作。
而栈帧里的结构如图:
比如,对于如下代码中的方法调用为:
package com.yiq.sellerplan;
class Demo
{
public static void main(String[] args) {
System.out.println("**beginning execution**");
Greeter greeter = new Greeter();
System.out.println("**created Greeter**");
greeter.greet();
}
}
class Greeter
{
private static Message s_message = new Message("Hello, World!");
public void greet() {
s_message.print(System.out);
}
}
class Message
{
private String m_text;
public Message(String text) {
m_text = text;
}
public void print(java.io.PrintStream ps) {
ps.println(m_text);
}
}