草庐IT

Cucumber-JVM

全部标签

深度剖析 | 【JVM深层系列】[HotSpotVM研究系列] JVM调优的"标准参数"的各种陷阱和坑点分析(攻克盲点及混淆点)「 1 」

【易错问题】MajorGC和FullGC的区别是什么?触发条件呢?相信大多数人的理解是MajorGC只针对老年代,FullGC会先触发一次MinorGC,不知对否?我参考了R大的分析和介绍,总结了一下相关的说明和分析结论。在基于HotSpotVM的基础角度针对HotSpotVM的实现,它里面的GC其实准确分类只有两大种:PartialGC(部分回收模式)PartialGC代表着并不收集整个GC堆的模式YoungGenerationGC(新生代回收模式):它主要是进行回收新生代范围内的内存对象的GC回收器。Old/TenuredGenerationGC(老年代回收模式):它主要是针对于回收老年代

18 Java内存模型与线程_JVM同步机制和锁类库实现线程安全

目录1线程安全定义2Java数据与线程安全2.1不可变2.2绝对线程安全2.3相对线程安全2.4线程兼容2.5线程对立3Java线程安全支持3.1互斥同步3.1.1synchronized互斥同步原理3.1.2Lock接口和ReentrantLock互斥同步原理3.1.3synchronized和Lock对比3.2非阻塞同步3.3无同步方案3.3.1可重入代码3.3.2线程本地存储1线程安全定义含糊的定义:如果一个对象可以安全地被多个线程同时使用,那它就是线程安全的严谨的定义:当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方

18 Java内存模型与线程_JVM同步机制和锁类库实现线程安全

目录1线程安全定义2Java数据与线程安全2.1不可变2.2绝对线程安全2.3相对线程安全2.4线程兼容2.5线程对立3Java线程安全支持3.1互斥同步3.1.1synchronized互斥同步原理3.1.2Lock接口和ReentrantLock互斥同步原理3.1.3synchronized和Lock对比3.2非阻塞同步3.3无同步方案3.3.1可重入代码3.3.2线程本地存储1线程安全定义含糊的定义:如果一个对象可以安全地被多个线程同时使用,那它就是线程安全的严谨的定义:当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方

19 Java内存模型与线程_JVM层面的锁优化

目录1锁优化历史2自旋锁与自适应自旋2.1关于自旋锁2.1自旋锁优化:自适应自旋3锁消除4锁粗化5轻量级锁6偏向锁7锁的优缺点对比1锁优化历史synchronized从JDK1.0到JDK1.5,效率低JDK1.5到JDK1.6,JVM团队对synchronized进行深度优化,加入了:适应性自旋、锁消除、锁膨胀、轻量级锁、偏向锁等优化技术JDK1.5开始,加入java.util.concurrent,提供API层面的轻量级锁应用为什么优化synchronized?互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给Java虚拟机的并发性能带来了很大

19 Java内存模型与线程_JVM层面的锁优化

目录1锁优化历史2自旋锁与自适应自旋2.1关于自旋锁2.1自旋锁优化:自适应自旋3锁消除4锁粗化5轻量级锁6偏向锁7锁的优缺点对比1锁优化历史synchronized从JDK1.0到JDK1.5,效率低JDK1.5到JDK1.6,JVM团队对synchronized进行深度优化,加入了:适应性自旋、锁消除、锁膨胀、轻量级锁、偏向锁等优化技术JDK1.5开始,加入java.util.concurrent,提供API层面的轻量级锁应用为什么优化synchronized?互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给Java虚拟机的并发性能带来了很大

JVM的运行数据区相

大家好,,这篇文章咱们聊下JVM性能优化的问题这篇文章主要介绍下JVM的运行数据区相关的内容,包括:程序计数器虚拟机栈本地方法栈堆方法区案例和总结好了,开始干货环节~作为一个常识性的知识,大家都知道字节码只是一个二进制文件存放在那里。要想在jvm里跑起来,先得有个运行的内存环境。也就是我们所说的jvm运行时数据区。1)运行时数据区的位置运行时数据区是jvm中最为重要的部分,执行引擎频繁操作的就是它。类的初始化,以及后面我们讲的对象空间的分配、垃圾的回收都是在这块区域发生的。)2)区域划分根据《Java虚拟机规范》中的规定,在运行时数据区将内存细分为几个部分线程私有的:Java虚拟机栈(Java

JVM的运行数据区相

大家好,,这篇文章咱们聊下JVM性能优化的问题这篇文章主要介绍下JVM的运行数据区相关的内容,包括:程序计数器虚拟机栈本地方法栈堆方法区案例和总结好了,开始干货环节~作为一个常识性的知识,大家都知道字节码只是一个二进制文件存放在那里。要想在jvm里跑起来,先得有个运行的内存环境。也就是我们所说的jvm运行时数据区。1)运行时数据区的位置运行时数据区是jvm中最为重要的部分,执行引擎频繁操作的就是它。类的初始化,以及后面我们讲的对象空间的分配、垃圾的回收都是在这块区域发生的。)2)区域划分根据《Java虚拟机规范》中的规定,在运行时数据区将内存细分为几个部分线程私有的:Java虚拟机栈(Java

解读JVM级别本地缓存Caffeine青出于蓝的要诀3 —— 讲透Caffeine的数据驱逐淘汰机制与用法

大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。上一篇文章中,我们聊了下Caffeine的同步、异步的数据回源方式。本篇文章我们再一起研讨下Caffeine的多种不同的数据淘汰驱逐机制,以及对应的实际使用。Caffeine的异步淘汰清理机制在惰性删除实现机制这边,Caffeine做了一些改进优化以提升在并发场景下的性能表现。我们可以和GuavaCache的基于容量大小的淘汰处理做个对比。当限制了GuavaCache最大容量之后,有新的记录写入超过了总大小,会理解触发数据淘汰策略,然后腾

解读JVM级别本地缓存Caffeine青出于蓝的要诀3 —— 讲透Caffeine的数据驱逐淘汰机制与用法

大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。上一篇文章中,我们聊了下Caffeine的同步、异步的数据回源方式。本篇文章我们再一起研讨下Caffeine的多种不同的数据淘汰驱逐机制,以及对应的实际使用。Caffeine的异步淘汰清理机制在惰性删除实现机制这边,Caffeine做了一些改进优化以提升在并发场景下的性能表现。我们可以和GuavaCache的基于容量大小的淘汰处理做个对比。当限制了GuavaCache最大容量之后,有新的记录写入超过了总大小,会理解触发数据淘汰策略,然后腾

JVM学习 类加载子系统

JVM哔哩哔哩尚硅谷视频宋红康老师Java代码执行流程简图详细图1、类加载子系统类加载器子系统的作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识ClassLoader只负责class文件的加载,至于它是否可以运行,则由ExecutionEngine决定加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池的部分映射)类的加载过程图1.1、加载阶段加载通过一个类型的权限定名获取定义类的二进制字节流将这个字节流所代表的静态存储结构转化