![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
虚拟机
文章平均质量分 60
weixin_41794129
这个作者很懒,什么都没留下…
展开
-
JVM Volatile缓存一致性协议
Volatile 只能保证可见性与有序性,不能保证原子性。其实现原理为:内存屏障。java内存模型定义了8种操作,这8种操作都是原子的,不可再分的:lock:作用于主内存变量unlock:作用于主内存变量read:作用于主内存变量load:作用于工作内存变量use:作用于工作内存变量assign:作用于工作内存变量store:作用于工作内存变量write:作用于主内存变量对一个变量的操作,read操作一定是在load操作之前,store一定是在write操作之前,且不允许read、l原创 2021-01-20 01:20:40 · 453 阅读 · 0 评论 -
Class文件结构
Class文件结构魔数与Class文件的版本常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合Class文件是一组以8个字节为基础单位的字节流,各个项目严格按照顺序排列,中间没有任何的分隔符。当遇到需要8个字节以上空间数据项时,则需按照高位在前的方式分割成若干个8个字节进行存储。un表示n个无符号数,table表示多个无符号数组成的表。 ClassFile { u4 magic; u2 minor_version; u2原创 2021-01-11 11:22:25 · 99 阅读 · 0 评论 -
jconsole使用
-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8011-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false原创 2021-01-06 09:39:10 · 79 阅读 · 0 评论 -
深入理解java虚拟机
垃圾收集器与内存分配策略概述对象已死引用计数算法可达性分析算法再谈引用生存还是死亡回收方法区垃圾收集算法分代收集理论标记清除算法标记复制算法标记整理算法HotSpot算法实现GC Roots节点选取安全点安全区域记忆集与卡麦写屏障并发的可达性分析概述本地方法栈、虚拟机栈、程序计数器等都是随着线程的产生而产生,线程的死亡而死亡,故随着线程死亡,则会回收内存,该区域不需要我们考虑如何回收。而java堆和方法区的内存分配和回收是需要我们关注的,因为这两部分的内存分配是不确定的,例如同一个接口的不同实现所需内原创 2020-12-29 10:15:38 · 125 阅读 · 0 评论 -
深入理解java虚拟机
深入理解java虚拟机--实战OOM异常Java堆溢出虚拟机栈和本地方法栈溢出本博客所有内容为阅读《深入理解java虚拟机》小结,如有侵权,请联系删除。书接上文,本文将做几个OOM小实验,目的:通过代码验证各个运行时区域存储的内容,遇到OOM时,能根据异常信息迅速得知哪个区域OOM,以及如何处理提前:参数设置-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8Java堆溢出/** * VM Args原创 2020-12-14 01:19:37 · 156 阅读 · 1 评论 -
深入理解java虚拟机
深入理解java虚拟机一运行时数据区域运行时数据区域线程共享的数据区堆方法区线程隔离的数据区虚拟机栈本地方法栈程序计数器直接内存本博客所有内容为阅读《深入理解java虚拟机》小结,如有侵权,请联系删除。运行时数据区域线程共享的数据区堆对于java应用程序来说,堆是虚拟机所管理的内存中最大的一块。虚拟机启动时创建,此内存的唯一目的就是存放对象实例。从内存分配的角度看,堆可以划分出多个线程私有的分配缓冲区(ThreadLocalAllocationBuffer,TLAB),以提升对象分配时的效率。根原创 2020-12-12 15:19:26 · 115 阅读 · 0 评论