JVM

Java/.Net双平台核心,Jvm和CLR运行异同点

前言: 本篇以.Net 7.0.2 CLR 和 OpenJDk19参照,解析下它们各自调用函数的异同。 以下为个人理解。 概述 JDK大约5.9G,CLR大约7.6G,两者相差1.7G左右。 root@tang-virtual-machine:/home/tang# cd jdk-jdk-19-36 ... »

tangyanzhi1111

面试必问:JVM 如何确定死亡对象?

在 JVM 中,有两个非常重要的知识点,一个是 JVM 的内存布局(JVM 运行时的数据区域),另一个就是垃圾回收。而垃圾回收中又有两个重要的知识点,一个是如何确定 JVM 中的垃圾对象,另一个是使用不同的垃圾收集器进行垃圾回收。而本篇要讨论的是前者,后面的内容咱们下一篇再聊。 垃圾对象的判定有两种 »

java启动jar包修改JVM默认内存问题

目录 JVM默认物理内存 设置JVM内存的参数有四个 操作步骤 1.执行命令:free -h 2.执行命令:top 3. 启动jar包 4. 如果是tomcat项目启动 总结 JVM默认物理内存 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-X »

关于JVM默认堆内存大小问题

目录 JVM默认堆内存大小 堆内存 JVM默认分配堆内存是多少? 总结 JVM默认堆内存大小 我们都知道jvm有一个堆内存的概念,我们可以通过-Xmx:最大堆内存,-Xms初始化堆内存来进行设置。 那么当我们不设置时默认是多少呢 堆内存 这里直接贴上官网jdk1.8的链接htt »

一篇文章弄懂JVM类加载机制过程以及原理

目录 一、做一个小测试 二、类的初始化步骤: 三、看看你写对了没? 四、类的加载过程 五、类加载器的分类 1、启动类加载器(引导类加载器) 2、扩展类加载器 3、应用程序类加载器(系统类加载器) 六、类加载器子系统的作用 七、总结 一、做一个小测试 通过注释,标注出下面两个类中每个 »

从历代GC算法角度刨析ZGC

作者:京东科技 文涛 前言 本文所有介绍仅限于HotSpot虚拟机, 本文先介绍了垃圾回收的必要手段,基于这些手段讲解了历代垃圾回收算法是如何工作的, 每一种算法不会讲的特别详细,只为读者从算法角度理解工作原理,从而引出ZGC,方便读者循序渐进地了解。 GC 是 Garbage Collection ... »

JVM参数:带你认识-X和-XX参数

摘要:JVM参数分为三类:标准参数、非标准参数(-X参数)和高级选项(-XX参数)。本文主要为大家讲解-X参数和-XX参数。 本文分享自华为云社区《JVM运行参数之-X和-XX参数》,作者:共饮一杯无 。 JVM参数分为三类:标准参数、非标准参数(-X参数)和高级选项(-XX参数)。本文主要为大家讲 »

记一次使用gdb诊断gc问题全过程

原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介 上次解决了GC长耗时问题后,系统果然平稳了许多,这是之前的文章《GC耗时高,原因竟是服务流量小?》 然而,过了一段时间,我检查GC日志时,又发现了一个GC问题,如下: 从这个图中可以发现,我们GC有一些尖峰,有时 »

为啥要对jvm做优化?

摘要:在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。 本文分享自华为云社区《为什么需要对jvm进行优化,jvm运行参数之标准参数》,作者:共饮一杯无。 我们为什么要对jvm做优化? 在本地开发环境中我们很少会遇到需要对jvm进行优化的需 »

记一次线上FGC问题排查

本文记录一次线上 GC 问题的排查过程与思路,希望对各位读者有所帮助。过程中也走了一些弯路,现在有时间沉淀下来思考并总结出来分享给大家,希望对大家今后排查线上 GC 问题有帮助。 引言 本文记录一次线上 GC 问题的排查过程与思路,希望对各位读者有所帮助。过程中也走了一些弯路,现在有时间 »

垃圾收集器必问系列—CMS

本文已收录至Github,推荐阅读 ? Java随想录 微信公众号:Java随想录 CSDN: 码农BookSea 应该相信,自己是生活的战胜者。——雨果 纵观全书《深入理解JVM虚拟机》第三版,在垃圾回收器这一篇章,对于CMS的笔墨是非常多的。CMS收集器是HotSpot虚拟机追求低停顿的第一次 ... »

booksea JVM

JVM是如何解决跨代引用问题的?

本文已收录至Github,推荐阅读 ? Java随想录 微信公众号:Java随想录 CSDN: 码农BookSea 不知道自己的无知,乃是双倍的无知。——柏拉图 跨代引用问题 跨代引用是指新生代中存在对老年代对象的引用,或者老年代中存在对新生代的引用。 假如要现在进行一次只局限于新生代区域内的收集 ... »

booksea JVM

面试官:JVM是如何判定对象已死的?

面试官:JVM是如何判定对象已死的? 本文已收录至Github,推荐阅读 ? Java随想录 微信公众号:Java随想录 CSDN: 码农BookSea 知道的越多,才知知道的越少。——苏 »

booksea JVM

JVM进程缓存Caffeine的使用

一、前言 Caffeine是当前最优秀的内存缓存框架,不论读还是写的效率都远高于其他缓存,而且在Spring5开始的默认缓存实现就将Caffeine代替原来的Google Guava 二、基本使用 <dependency> <groupId>com.githu »

精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾回收技术的分析指南(GC原理透析)

前提介绍 很多小伙伴,都跟我反馈,说自己总是对JVM这一块的学习和认识不够扎实也不够成熟,因为JVM的一些特性以及运作机制总是混淆以及不确定,导致面试和工作实战中出现了很多的纰漏和短板,解决广大小伙伴痛点,我写了本篇文章,希望可以帮助大家夯实基础和锻造JVM技术功底。 什么是垃圾收集(GC) 在J »

你知道JVM中GC Root对象有哪些吗

目录 JVM中GC Root对象有哪些 (一)虚拟机栈中引用的对象 (二)方法区中类静态属性引用的对象 (三)方法区中常量引用的对象 (四)本地方法栈中引用的对象 JVM 中的 GC Roots 和可达链 什么是GC Root 对象? 常用的GC算法 GC Root 对象有哪些? 总结 »

一次JVM GC长暂停的排查过程

作者:京东科技 徐传乐 背景 在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。 事情最初是线上某应用垃圾收集出现Full GC异 ... »

JVM面试大总结

JVM是运行在操作系统之上的,它与硬件没有直接的交互。先说一下JVM的内存区域,当函数开始运行时,JVM拿到自己的内存将自己的内存区域进行了分割,分为五块区域:线程共享的有堆、方法区,线程私有的有java栈、本地方法栈、程序计数器。 ... »

tianClassmate jvm

【JVM故障问题排查心得】「内存诊断系列」Xmx和Xms的大小是小于Docker容器以及Pod的大小的,为啥还是会出现OOMKilled?

为什么我设置的大小关系没有错,还会OOMKilled? 这种问题常发生在JDK8u131或者JDK9版本之后所出现在容器中运行JVM的问题:在大多数情况下,JVM将一般默认会采用宿主机Node节点的内存为Native VM空间(其中包含了堆空间、直接内存空间以及栈空间),而并非是是容器的空间为标准。 ... »

Spring之从桥接方法到JVM方法调用解读

目录 前言 桥接方法 什么时候会出现桥接方法? 为什么需要桥接方法? 总结 前言 之所以写这么一篇文章是因为在Spring中,经常会出现下面这种代码 // 判断是否是桥接方法,如果是的话就返回这个方法 BridgeMethodResolver.findBridgedMethod( »