随笔分类 - JVM
摘要:官方调优建议:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ 一、堆分配 Default Arrangement of Generations, Except for Parallel Collector and
阅读全文
摘要:一、对象的创建过程 加载类->申请对象内存->成员变量赋默认值->调用构造方法<init>,包含赋值初始值,执行构造方法语句 二、对象的布局(64位) 普通对象 对象头:markword 8 ClassPointer指针:-XX:+UseCompressedClassPointers 为4字节 不开
阅读全文
摘要:Java虚拟机定义了在程序执行期间使用的各种运行时数据区域。 其中一些数据区域是在Java虚拟机启动时创建的,仅在Java虚拟机退出时才被销毁。 其他数据区域是每个线程私有的。线程私有的数据区域在一个线程被创建时创建,在线程关闭时销毁。 一、The pc Register The Java Virt
阅读全文
摘要:一、cache line 缓存时将多个数据缓存到同一行内,一旦其中一个数据被改变,整个缓存行会失效。 产生问题:伪共享。 解决方法:1.8之前可以使用缓存行对齐(64bytes)。1.8之后官方提供了解决方案通过对类或者变量添加@Contended注解实现,需要在JVM启动时设置-XX:-Restr
阅读全文
摘要:一、类加载的过程: 二、类加载器 通过双亲委派的方式,由子到父再由父到子进行加载,保证一些基础类的使用安全。 通过重写ClassLoader中的loadClass(String)方法可以破坏双亲委派方式。 自定义类加载器的意义:比如加密,热部署。 三、混合模式 解释器+热点代码编译。
阅读全文
摘要:摘自jvms8 idea可使用jclasslib Bytecode viewer插件查看class文件结构
阅读全文

浙公网安备 33010602011771号