JVM 读书笔记

内存区域

  • 内存划分
    内存区域分为线程共享的和线程私有的
    线程共享:堆、方法区 ,会oom;
    线程私有:虚拟机栈、本地方法栈、程序计数器,除了程序计数器不会oom,其他两个会oom以及stackoverflow;

程序技术器:用来表示线程执行代码的位置;行号指示器;
堆:存放对象,可继续细分为新生代老年代,Eden和Survivor ;
栈:运行时方法模型,存放本地变量、操作数栈、方法入口等信息;
方法区:永久代,类信息、静态变量、常量池

String.intern():如果字符串在常量池中存在,则直接返回;如果不存在,会把字符串放到常量池里;

  • 对象内存布局
    对象布局分三个部分:对象头、实体数据、填充对齐
    对象头:mark word ,包含hash 、锁标记、gc年龄标记、偏向锁等信息;

你可能感兴趣的:(JVM 读书笔记)