虚拟机与容器:JVM
图解JVM内存模型及JAVA程序运行原理
本文主要介绍了JVM内存模型及JAVA程序运行原理。
深入浅出解析JVM中的Safepoint
最早接触jvm中的安全点概念是在读《深入理解Java虚拟机》那本书垃圾回收器章节的内容时。相信大部分人也一样,都是通过这样的方式第一次对安全点有了初步认识。
从原理聊 JVM(一):染色标记和垃圾回收算法
本文详细介绍了Java虚拟机内存中垃圾回收机制的基本原理,包括标记清除、标记复制和标记整理算法,以及年轻代和年老代的划分和数据迁移方式。同时还介绍了写屏障、记忆集和卡表实现方式。文章中特别强调了标记整理算法避免了标记清除算法的碎片问题以及复制算法的空间问题,是一种高效的垃圾回收方式。作者也提到将会深入介绍CMS、G1、ZGC等垃圾收集器的运作流程和原理。
谈JVM线程和内存参数合理性设置
JVM启动参数中很多与线程、内存相关。在生产实践中,对这些参数随意设置或者采用默认值可能会有一些风险,特别是在JDK低版本的容器下。文章列出了这些参数设置方法,并给出常用容器规格的推荐设置。
十个问题弄清JVM&GC(二)
上一篇文章结尾时我们谈到,就JVM的设计规范,从使用用途角度JVM的内存大体的分为:线程私有内存区 和 线程共享内存区。
浅谈阿里开源JVM Sandbox(内含代码实战)
本文介绍了JVM Sandbox的功能,实际用法,以及基础原理。
JVM和机器规格调优在有赞的实践
本文介绍了有赞如何通过JVM、机器规格和参数调优,实现提升稳定性和降低成本的双重收益。
jvm-sandbox初体验
目前转转的辅助测试平台有JVM注入、流量回放,前者通过修改指定服务、类、方法返回值,Mock超时、异常等难以测试覆盖场景,提高测试效率;后者通过在稳定环境采集流量,动态环境自动回放用例,根据diff同一用例稳态和动态环境返回结果来检验程序是否存在问题,降低代码变动对整体系统带来的风险,这些平台均用到了jvm-sandbox技术,最近学习了相关知识,记录下初次体验心得。
JVM内存Dump原理与在线分析实战
当前我们微服务容器化部署JVM 实例很多,常常需要进行JVM heap dump analysis,为了提升JVM 问题排查效率,得物技术保障团队研究了JVM内存Dump 原理与设计开发了JVM 内存在线分析。
JVM家庭成员盘点及各自职能介绍
java被称为一处编译,到处运行,那么它实现的机制到底是什么呢?关键就在jvm屏蔽了跨平台的多种处理。
JVM自定义类加载器在代码扩展性的实践
类加载器作为JVM的核心概念,其在将代码编译产生的.class文件加载到虚拟机形成可以直接使用的类型过程中有重要的作用;由于加载过程中通过一个类的全限定名来获取定义此类的二进制字节流没有进行严格限制,从而给广大的开发者们留下广阔的发挥空间。
Elasticsearch JVM 堆内存使用率飙升,怎么办?
高 JVM 内存使用率会降低集群性能并触发断路器错误(导致内存熔断)。
为了防止这种情况发生,如果节点的 JVM 内存使用率持续超过 85%,官方建议采取措施降低内存压力。
教你用Java开发一个简单的JVM
几年前,接到一个开发任务:用Java开发能运行Java智能合约的虚拟机。在开发Java智能合约时,只能使用智能合约SDK提供的类和一些Java常用类(8种基本数据类型包装类;String、BigInteger、BigDecimal、List、Map、Set 相关的类)。
完整的Java智能合约虚拟机比较复杂,且要保存Java智能合约状态。这篇文章仅介绍一个简单JVM实现,支持少量字节码。参考 Java 虚拟机规范(Java SE 8),里面写到:要正确实现 Java 虚拟机,只需能够读取class文件格式并正确执行其中指定的操作。为了简化实现,使用了 ASM解析class文件。
高并发场景下JVM调优实践之路
本文着重于JVM调优实践,一步一步介绍线上某核心服务的JVM调优落地过程,希望能给读者提供JVM调优的思路和可参考、可落地的方案。
谈谈JVM内部锁升级过程
- 对象在内存中的内存布局是什么样的?
- 描述synchronized和ReentrantLock的底层实现和重入的底层原理。
- 谈谈AQS,为什么AQS底层是CAS+volatile?
- 描述下锁的四种状态和锁升级过程?
- Object o = new Object() 在内存中占用多少字节?
- 自旋锁是不是一定比重量级锁效率高?
- 打开偏向锁是否效率一定会提升?
- 重量级锁到底重在哪里?
- 重量级锁什么时候比轻量级锁效率高,同样反之呢?
JVM垃圾回收器CMS原理与调优
我们写好的代码,是要通过JVM才能运行的。JVM 想要执行一个类,首先要加载类,在加载类之前,需要先编译成字节码class 文件;然后就执行类的加载过程,JVM 加载类的话,需要类加载器;类加载器是分层级的,遵循双亲委派机制。