先在工作中用的Java,再回过头看看Java的基础内容,可能理解会更深刻吧。
自己的理解估计有不少错的,先记录下来,以后发现一个就改一个。
1.关于内存
程序计数器:某线程执行的行号的计数器,每个线程都有一个。
虚拟机栈:存放方法变量/运行空间的栈
本地方法栈:存放本地方法变量的栈(指的是系统级别的方法调用需要的变量?)
堆:存放对象
方法区:hotSpot ,Java7前的永久代,Java8元数据区。存放的是类的各种属性
参考:
2.对象
对象的创建:常量池中查找类是否有对应的符号引用,若有,根据它得到类是否被初始化,若无则加载。
内存分配:分为指针碰撞和空闲列表两种方式。
对象在内存的分布:Header+Instance Data+Padding
访问:HotSpot是直接指针访问