深入理解java虚拟机
说在前面的话<深入理解java虚拟机> link 是一本jvm入门经典,推荐所有java工程师阅读,并应该多读,不同阶段读. 这篇博客就是为了总结本人从该书中的领悟. 运行时的数据分区 程序计数器:线程执行的字节码行号. 虚拟机栈:生命周期和线程相同,描述的是java方法执行的内存模型, 每个方法执行的同时都会创建一个栈帧(stack frame).存放局部变量、操作数栈、动态链接、方法出口等信息. 堆:存放对象实例.随着JIT编译器、逃逸分析技术,栈上分配、标量替换导致不一定所有的对象都在堆上. 方法区:虚拟机加载的类信息、常量、静态变量、JIT编译的代码。堆的一个逻辑部分。hotspot使用永久代实现方法区,会受限于MaxPermSize Direct Memory: DirectByteBuffer分配堆外内存.不受-Xmx参数控制. java对象java 对象的组成: 对象头(header)+实例数据(instance data)+对齐填充 对象头:类的元数据、hash码、gc分代). 实例数据:包括父类和自身定义的字段内容. 对齐填充,保证8字节的整数倍. 对象的...