Object obj=new Object();
一句很简单的代码,但是这里却涉及Java栈,Java堆,Java方法区三个最重要的内存区域之间的关联。
假设这句代码出现在方法体中:
-
Object obj
将反映到Java栈的本地变量表,这是一个本地变量的定义。是一个引用类型。
-
new Object()
-
程序运行,类型信息已经加载到内存里,这些数据就在Java方法区中,包括:类型的父类型,实现的接口、包含的方法等类型信息。
new Object()
,根据这些信息建立对象。可以看到这些信息是线程共享的。