【死磕JVM】
文章平均质量分 92
JVM虚拟机
牧小农
这个作者很懒,什么都没留下…
展开
-
【死磕JVM】这可能是最全的JVM面试题了
1. 描述一下jvm内存模型,以及这些空间的存放的内容 ?2.堆内存划分的空间,如何回收这些内存对象,有哪些回收算法?垃圾回收算法: 标记清除、复制(多为新生代垃圾回收使用)、标记整理3.如何解决线上gc频繁的问题?查看监控,以了解出现问题的时间点以及当前FGC的频率(可对比正常情况看频率是否正常)了解该时间点之前有没有程序上线、基础组件升级等情况。了解JVM的参数设置,包括:堆空间各个区域的大小设置,新生代和老年代分别采用了哪些垃 圾收集器,然后分析JVM参数设置是否合理。原创 2021-04-25 20:52:49 · 11556 阅读 · 35 评论 -
【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大
Arthas是啥当我们系统遇到JVM或者内存溢出等问题的时候,如何对我们的程序进行有效的监控和排查,就发现了几个比较常用的工具,比如JDK自带的 jconsole、jvisualvm还有一个最好用的工具——jprofiler,但是这个是收费的,或者除了很有钱的公司,一般很少人会用这个,还有一个就是我们今天的主角——Arthas ,为什么今天会重点讲这个呢?官网地址:http://arthas.gitee.io/GitHub地址:https://github.com/alibaba/arthas/.原创 2021-04-21 22:40:08 · 27081 阅读 · 11 评论 -
【死磕JVM】看完这篇我也会排查JVM内存过高了 就是玩儿!
前言CPU 是时分的,操作系统里面有很多线程,每个线程的运行时间由CPU决定,CPU会分给每一个线程一个时间片,时间片是一个很短的时间长度,如果在时间片内,线程一直占有,就是100%,我们应该意识到,CPU运行速度很快(主频非常高),除非是密集型耗费CPU的运算,其他类型的任务都会在小于时间片的时间内结束。内存过高一般有两种情况:内存溢出和内存泄露内存溢出: 程序分配的内存超过物理机的内存大小,导致无法继续分配内存,出现OOM报错内存泄露: 不再使用的对象一直占据着内存不释放,导致这块内存浪费掉,原创 2021-04-17 16:29:38 · 11498 阅读 · 25 评论 -
【死磕JVM】什么是JVM调优?
想要学习JVM调优,我们必须提前知道他们的一些参数,这样才方便我们更好的去使用他们JVM常用命令行参数JVM的命令行参数参考: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html1. 查看参数列表虚拟机参数分为基本和扩展两类,在命令行中输入 JAVA_HOME\bin\java就可得到基本参数列表。在命令行输入 JAVA_HOME\bin\java –X就可得到扩展参数列表。2. 基本参数说明:-clien原创 2021-04-13 22:54:53 · 6297 阅读 · 15 评论 -
【死磕JVM】给同事讲了一遍GC后,他要去面试,年轻人,就是容易冲动!
事情是这个样子的,有一天正在和同事聊公司的哪个小姐姐好看,怎么去约别人出来,走着走着同事看到了一个垃圾桶,发出来自灵魂的提问说,小农你知道什么是垃圾吗?这个弯属实有点没想到,好在经历过大风大浪的人,这点算什么,垃圾是啥,垃圾就是没有引用的对象就是垃圾啊,这你都不知道?...原创 2021-04-02 17:14:53 · 2713 阅读 · 4 评论 -
【死磕JVM】一道面试题引发的“栈帧”!!!
前言最近在小农的朋友——小勇在找工作,开年来金三银四,都想跳一跳,找个踏(gao)实(xin)一点的工作原创 2021-03-14 18:44:53 · 4624 阅读 · 18 评论 -
【死磕JVM】五年 整整五年了 该知道JVM加载机制了!
类加载Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程和那些编译时需要连接工作的语言不同,在Java语言里,类型的加载,连接和初始化过程都是在程序 运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为java应用程序提供比较高的灵活性。当我们使用到某个类的时候,如果这个类还未从磁盘上加载到内存中,JVM就会通过三步走策略(加载、连接、初始化)来对这个类进行初始化,JVM完原创 2021-02-27 17:29:52 · 9364 阅读 · 40 评论 -
【死磕JVM】JVM快速入门之前戏篇
简介Java是一门可以跨平台的语言,但是Java本身是不可以实现跨平台的,需要JVM实现跨平台。javac编译好后的class文件,在Windows、Linux、Mac等系统上,只要该系统安装对应的Java虚拟机,class文件都可以运行。达到 ”一次编译,到处运行” 的效果。什么是JVMJVM是可以运行在Java代码的虚拟的计算机,既然是虚拟的计算机,当然也包含自己的CPU、字节码指令集、寄存器、栈、垃圾回收、堆和存储方法域,我们可以理解成JVM自己就是一套操作系统。Java从编译到执行Virt原创 2021-02-24 15:51:42 · 3079 阅读 · 25 评论