自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 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 470

原创 Class文件结构

Class文件结构魔数与Class文件的版本常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合 Class文件是一组以8个字节为基础单位的字节流,各个项目严格按照顺序排列,中间没有任何的分隔符。当遇到需要8个字节以上空间数据项时,则需按照高位在前的方式分割成若干个8个字节进行存储。un表示n个无符号数,table表示多个无符号数组成的表。 ClassFile { u4 magic; u2 minor_version; u2

2021-01-11 11:22:25 207

原创 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 97

原创 深入理解java虚拟机

垃圾收集器与内存分配策略概述对象已死引用计数算法可达性分析算法再谈引用生存还是死亡回收方法区垃圾收集算法分代收集理论标记清除算法标记复制算法标记整理算法HotSpot算法实现GC Roots节点选取安全点安全区域记忆集与卡麦写屏障并发的可达性分析 概述 本地方法栈、虚拟机栈、程序计数器等都是随着线程的产生而产生,线程的死亡而死亡,故随着线程死亡,则会回收内存,该区域不需要我们考虑如何回收。 而java堆和方法区的内存分配和回收是需要我们关注的,因为这两部分的内存分配是不确定的,例如同一个接口的不同实现所需内

2020-12-29 10:15:38 320

原创 Hbase-APi Client的简单操作

官网是最好的学习材料,请大家移步官网HbaseApi import java.io.IOException; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory;

2020-12-28 14:57:43 190

原创 深入理解java虚拟机--实战OOM异常

深入理解java虚拟机--方法区和运行时常量池溢出方法区和运行时常量池溢出 书接上文,本文继续做实验。 本博客所有内容为阅读《深入理解java虚拟机》小结,如有侵权,请联系删除。 方法区和运行时常量池溢出 ...

2020-12-25 09:58:05 94

原创 深入理解java虚拟机

深入理解java虚拟机--实战OOM异常Java堆溢出虚拟机栈和本地方法栈溢出 本博客所有内容为阅读《深入理解java虚拟机》小结,如有侵权,请联系删除。 书接上文,本文将做几个OOM小实验,目的:通过代码验证各个运行时区域存储的内容,遇到OOM时,能根据异常信息迅速得知哪个区域OOM,以及如何处理 提前:参数设置-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 Java堆溢出 /** * VM Args

2020-12-14 01:19:37 236 1

原创 深入理解java虚拟机

深入理解java虚拟机额---HotSpot虚拟机对象探秘对象的创建对象的内存布局对象访问定位 本博客所有内容为阅读《深入理解java虚拟机》小结,如有侵权,请联系删除。 书接上文,接下来探讨HotSpot虚拟机在Java堆中对象分配、布局和访问全过程。 下文讨论的对象仅限于普通java对象,不包括数据和class对象等。 对象的创建 在类加载检查通过之后,接下来虚拟机将为新生对象分配内存。对象所需内存大小在类加载完成后便可确定。 分配内存的两种方式:指针碰撞(Bump The Pointer)适用于堆内存

2020-12-12 16:31:24 61

原创 深入理解java虚拟机

深入理解java虚拟机一运行时数据区域运行时数据区域线程共享的数据区堆方法区线程隔离的数据区虚拟机栈本地方法栈程序计数器直接内存 本博客所有内容为阅读《深入理解java虚拟机》小结,如有侵权,请联系删除。 运行时数据区域 线程共享的数据区 堆 对于java应用程序来说,堆是虚拟机所管理的内存中最大的一块。虚拟机启动时创建,此内存的唯一目的就是存放对象实例。从内存分配的角度看,堆可以划分出多个线程私有的分配缓冲区(ThreadLocalAllocationBuffer,TLAB),以提升对象分配时的效率。 根

2020-12-12 15:19:26 278

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除