2018-02-27 jvm-08-虚拟机字节码执行引擎 概览:虚拟机的方法调用和字节码执行,运行时栈帧结构,基于栈的字节码解析执行引擎 输入的是字节码文件,处理过程是字节码解析的等效过程,输出执行结果。 继续阅读全文 »
2018-02-26 jvm-07-虚拟机类加载机制 类加载机制是虚拟机将class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。 继续阅读全文 »
2018-02-07 jvm-04-调优实践 如何利用高性能硬件使用若干个32位虚拟机建立逻辑集群来利用硬件资源。 需要注意: 全局资源竞争 资源池利用 32位的内存限制 本地缓存的浪费 对于CPU资源不敏感的应用,改用CMS(追求低停顿时间)垃圾收集器。 堆外内存导致溢出错误Direct Memory收到系统进程所能管理的最大内存限制,不能在空间不足时通知系统回收,只会在 Full GC 时回收。 调用系统命令使用 System.runExce() 调用系统命令有一定开销。
2018-01-31 jvm笔记-02-垃圾收集器与内存分配策略 对象的生存与死亡如何判定一个对象的生与死 引用计数法 Reference Counting 给对象中添加一个引用计数器,被引用加1,引用失效减1,计数器为0则对象可以被回收。 缺点:很难解决对象之间互相循环引用的问题。 可达性分析法 Reachability Analysis 通过一系列 GC Roots 的对象作为起点,向下搜索,遍历路径称为引用链。当一个对象到 GC Roots 不可达时,证明此对象是不可用的。 GC Roots对象包括: 虚拟机栈中引用的对象 方法区中静态常量引用对象 方法区中常量引用对象 本地方法栈中引用的对象 继续阅读全文 »
2018-01-31 Jvm笔记-01-Java运行时数据区域与对象 运行时数据区域1. 程序计数器 Program Counter Register通过改变计数器值选取下一条指令完成分支、循环、跳转、异常处理、线程恢复等基础功能。线程私有,互不影响。 2. Java虚拟机栈 JVM Stacks线程私有,生命周期与线程相同。每个方法执行时创建栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等,方法调用与完成对应入栈和出栈。Java内存区粗略分为堆和栈,栈即虚拟机栈。配置 -Xss 参数设定栈帧大小 继续阅读全文 »