1 对象创建在并发情况下不是线程安全的
解决方案 1 对分配内存空间的操作进行同步处理 2 把内存分配的操作按照线程划分在不同空间上
2 对象创建的过程
检查对象是否加载------> 为对象分配内存空间--->将内存空间置零---->对象头进行设置---->init方法执行
3 对象的内存分布 对象头 实例数据 对齐补充
4 对象的访问定位
栈上的reference定位、访问堆中的对象的具体位置主要要两种方法:1句柄 2直接指针
java堆异常
package test;
import java.util.List;
import java.util.ArrayList;
public class Hello {
static class HeapObj{}
public static void main(String[] args) {
// TODO Auto-generated method stub
List<HeapObj> list=new ArrayList<HeapObj>();
while(true){
list.add(new HeapObj());
}
}
}
堆中不断创建对象 达到堆得最大容量限制之后