随笔分类 - JVM
摘要:一开始synchronized锁的实现是基于操作系统的提供的信号量(PV操作)实现的,这个就叫重量级锁这个实现默认一定存在数据竞争,不管有没有数据竞争都枷锁,所以是一种悲观的线程安全实现方法。所有最大的问题就是性能问题,会有用户态到核心态转换等一系列比较消耗资源的操作。 所以JDK6是专门做了优化,
阅读全文
摘要:这次是测试环境,处理问题的时间比较充裕。同样和之前堆内存溢出一样,arthas attach failure。不同的是这次attach过程报错显示 OutOfMemoryError:Metaspace。 随即想到是不是配置JVM的MaxMetaspaceSize配置过小,查看了下docker-com
阅读全文
摘要:分享本人在CSDN看的一个JVM系列文章,挺不错,内容简明扼要。看完《深入理解Java虚拟机》后,再看下这个系列一共八篇文章巩固一下查漏补缺。 后面工作没那么忙的话,计划自己总结概括下所需的JVM知识加深印象。 【JVM系列】https://blog.csdn.net/zwx900102/categ
阅读全文
摘要:以下是当时的处理流程: top CPU100% arthas attach failure jps -l jmap -histo:live <pid> | more heapdump MAT(JVisualVM) XSSFWorkbook修改成SXSSFWorkbook(POI的导出优化类,维护一个
阅读全文
摘要:内存屏障就是一种屏障指令,在X86架构中,指的是加了“lock前缀”的汇编指令在执行时会让 CPU 或编译器在对内存进行操作的时候, 严格按照一定的顺序来执行。 也就是说内存屏障保证了一下两点:第一点是 在内存屏障之前的指令和之后的指令不会由于CPU的指令优化而导致指令乱序执行;第二点是 在内存屏障
阅读全文
摘要:缓存一致性协议是保证“硬件CPU的cache” 和 “硬件内存”之间数据的一致性,更详细说也就是缓存一致性协议是保证“物理计算机中的硬件CPU cache” 和 “物理计算机中的硬件内存”之间数据的一致性。这个协议只是保证了硬件层面的数据在CPU cache和内存之间的可见性。而JMM和硬件没关系,
阅读全文