jvm
游戈程序员
阅读-思考-书写
展开
-
《深入理解虚拟机》阅读笔记-垃圾回收算法
垃圾回收算法 标记-清除(Mark-Sweep) 标记需要回收的对象,清除所有回收对象的内存区域 标记与清除过程的效率不高 会产生大量不连续的内存碎片,不利于分配大对象(无足够的连续内存时,会触发另一次垃圾收集)。 停止-复制 将可用内存等分为两块。每次仅使用一块,当内存耗尽,将活着的对象规整地放入另外一块内存。 内存区域规整,分配内存仅需移动指针即可。 缺点:浪费一半...原创 2020-04-19 13:45:18 · 116 阅读 · 0 评论 -
《深入理解虚拟机》阅读笔记-垃圾收集器
垃圾收集器 概述 连线代表可组合使用 Parallel Scanvenge与G1没有使用传统的gc收集器代码框架,其余都共用了部分框架代码 并发与并行 并行(Parallel): 指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾...原创 2020-04-19 13:44:32 · 103 阅读 · 0 评论 -
《深入理解虚拟机》阅读笔记-内存分配与回收策略
内存分配与回收策略 概述 对象主要分配在新生代的Eden区。 如果启动本地线程缓冲(tlab),则按线程优先分配。 少数大对象会直接分配在老年代。 分配规则并不是固定的,主要取决于垃圾收集器的组合以及相关的参数设置。 -XX:+PrintGCDetails 打印GC信息 对象优先在Eden分配 当Eden连续不足以分配对象时,触发Minor GC,将活着的Eden对...原创 2020-04-19 13:43:47 · 108 阅读 · 0 评论 -
《深入理解虚拟机》阅读笔记-回收内存判断
回收内存判断 引用计数法(不适用) 对象存在一个引用计数器。当一个地方引用它,则计数器+1;引用失效则-1。当计数器为0时,即无引用关系。 实现简单,判断效率高 存在循环引用的问题。两个对象之间存在相互引用,但对外已经无法被访问,应该被回收,但是存在循环引用,导致无法回收。 可达性分析算法(gc-roots) Gc Roots 虚拟机栈(栈帧中的局部变量表)引用的对象 ...原创 2020-04-19 13:43:01 · 66 阅读 · 0 评论 -
JVM 性能监控及故障处理工具[1.8]
性能监控及故障处理工具[1.8] jps JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 默认显示正在运行的虚拟机进程:本地虚拟机唯一ID(LVMID)和执行主类 jps [-help] help : 获取帮助列表 jps [-q] [-mlvV] [<hostid>] q : 只输出LVMID,省略主类 ...原创 2020-04-19 13:39:49 · 148 阅读 · 0 评论 -
《深入理解虚拟机》阅读笔记-对象内存的分配与布局
对象内存的分配与布局 创建(new、clone、反射、反序列化) new -> 常量池定位符号引用,并检查符号引用代表的类是否被加载、解析、初始化。若没有,则执行类加载过程 对象所需内存在类加载完成后便可完全确定。 对象内存分配方式,由垃圾收集器是否有压缩整理功能决定 指针碰撞:堆内存绝对规整,使用的内存与空闲内存通过指针作为分界点。分配内存只需要相应移动指针即可。seria...原创 2020-04-19 13:38:40 · 84 阅读 · 0 评论 -
深入理解虚拟机阅读笔记-运行时数据区域
运行时数据区域 程序计数器(pc寄存器) 线程私有,空间较小,是当前线程所执行字节码的行号指示器 字节码解释器工作时,通过改变计数器的值来取得下一条字节码指令。 分支、循环、跳转、异常处理、线程恢复等操作的依赖。 Java方法:当前字节码指令的地址; Native方法,则为空。 唯一无OutOfMemoryError情况的内存区域 Java虚拟机栈 线程...原创 2020-04-19 13:08:45 · 104 阅读 · 0 评论