jvm
文章平均质量分 91
敲代码的程序狗
这个作者很懒,什么都没留下…
展开
-
面试官:你工作中做过 JVM 调优吗?怎么做的?
输出信息是Timestamp是距离jvm启动的时间,S0、S1、E是新生代的两个Survivor和Eden,O是老年代区,M是Metaspace,CCS使用压缩比例,YGC和YGCT分别是新生代gc的次数和时间,FGC和FGCT分别是老年代gc的次数和时间,GCT是gc的总时间。通过jstack工具输出现在的线程栈,再通过grep命令结合上一步拿到的线程16进制的id定位到这个线程的运行情况,其中jstack后面的7268是第(1)步定位到的进程号,grep后面的是(2)、(3)步定位到的线程号。原创 2022-10-06 17:03:15 · 316 阅读 · 0 评论 -
这几种常见的 JVM 调优场景,你知道吗?
以上三种严格地说还算不上jvm的调优,只是用了jvm工具把代码中存在的问题找了出来。我们进行jvm的主要目的是尽量减少停顿时间,提高系统的吞吐量。但是如果我们没有对系统进行分析就盲目去设置其中的参数,可能会得到更坏的结果,jvm发展到今天,各种默认的参数可能是实验室的人经过多次的测试来做平衡的,适用大多数的应用场景。如果你认为你的jvm确实有调优的必要,也务必要取样分析,最后还得慢慢多次调节,才有可能得到更优的效果。原创 2022-09-20 10:55:12 · 158 阅读 · 0 评论 -
爆肝整理JVM十大模块知识点总结,不信你还不懂
因此,比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那么这两个类就必定不相等。而对于Java堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的正是这部分内存。只有这个活动的栈帧的本地变量可以被操作数栈使用,当在这个栈帧中调用另一个方法,与之对应的栈帧又会被创建,新创建的栈帧压入栈顶,变为当前的活动栈帧。...原创 2022-07-28 13:29:42 · 206 阅读 · 0 评论 -
看了最新大厂面试,这6道JVM面试题都被问到了
本系列会系统的整理MySQL,Redis,SSM框架,算法,计网等面试常问技术栈的面试题,本文主要是整理分享了JVM相关的面试题,MySQL、Spring之前已经更新了,需要的同学也可以去看一下,希望对正在准备秋招的你们有所帮助!JVM面试题:为什么划分老年代和新生代,主要对象大小不一样,对象生命周期不一样。划分后,提供垃圾回收效率,节省资源,提升对象利用率等等。JVM调优其实就是通过调节JVM参数,即对垃圾收集器和内存分配的调优,以达到更高的吞吐和性能。JVM调优主要调节以下参数堆栈内存相关垃圾收集器相关原创 2022-07-08 14:48:09 · 292 阅读 · 0 评论 -
堪称神作,啃透这份JVM笔记,轻松搞定阿里30K面试
大家都是有经验的Java开发人员,想想为何要学习JVM? [面试?调优?装逼? ]不管出于何种原因,总之你得先学好。那怎么学好呢?Java技术的通用性、高效性、平台移植性和安全性使之成为网络计算的理想技术,从普通的PC到数据中心、从游戏控制台到科学超级计算机、从手机到互联网,Java技术无处不在。JVM正是支撑和实现这一切的秘密武器,它使得Java成为一个强大的、一致的、稳定的、广阔的运行平台。许多Java程序员都会有诸如此类的疑问。无奈,然而市面上各类 JVM 相关的资料虽多如牛毛,实际应用的角度讲解JV原创 2022-06-21 15:28:25 · 98 阅读 · 0 评论 -
JVM虚拟机专题之图形化监控工具-VisualVM
VisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一,它集成了多种性能统计工具的功能,可以替代jstat,jmap,jstack,也可以替代JConsole的使用。VisualVM有一个很大的优点:不需要被监视的程序基于特殊的Agent去运行,因此它的通用性很强,对应用程序实际性能的影响也较小,使得它可以直接应用在生产环境中。还有一大特点就是支持插件扩展,有了插件的扩展能力,就可以支持更多的功能,例如显示虚拟机进程以及进.原创 2022-05-07 14:56:38 · 392 阅读 · 0 评论 -
学了 JMM 指令重排序,让我明白该如何写单例模式了
JMM 是什么?JVM 是 Java Memory Model 的缩写, Java 内存模型来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下能够达到一致的内存访问效果。重排序在许多情况下,访问程序变量(对象实例字段、类静态字段和数组元素)的执行顺序可能与程序指定的顺序不同。编译器可以以优化的名义随意调整指令的顺序。在某些情况下,处理器可能会乱序执行指令。数据可以按照不同于程序指定的顺序在寄存器、处理器缓存和主存储器之间移动。产生重排序?下面是一个简单的例子,我运行的原创 2021-08-31 15:38:54 · 186 阅读 · 0 评论 -
你真的理解Java垃圾回收吗?万字长文带你彻底搞懂垃圾回收机制
本文已参与掘金创作者训练营第三期「话题写作」赛道,详情查看:掘力计划|创作者训练营第三期正在进行,「写」出个人影响力。Java 垃圾回收机制垃圾回收主要关注 Java 堆Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由 JIT 编译器进行一些优化),因此这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或者线原创 2021-08-30 19:52:12 · 367 阅读 · 0 评论 -
浅谈 Java 中字符串的初始化(详细图解)
前言在深入学习字符串类之前,我们先搞懂JVM是怎样处理新生字符串的。当你知道字符串的初始化细节后,再去写String s = "hello"或String s = new String("hello")等代码时,就能做到心中有数。首先得搞懂字符串常量池的概念,下面进入正文吧。常量池把经常用到的数据存放在某块内存中,避免频繁的数据创建与销毁,实现数据共享,提高系统性能。八种基础数据类型除了float和double都实现了常量池技术。在近代的JDK版本中(1.7后),字符串常量池被实现在原创 2021-08-25 15:41:29 · 2116 阅读 · 0 评论 -
面试必考题——JVM加载class文件的原理机制
1、JVM 简介JVM 是我们Javaer 的最基本功底了,刚开始学Java 的时候,一般都是从“Hello World ”开始的,然后会写个复杂点class ,然后再找一些开源框架,比如Spring ,Hibernate 等等,再然后就开发企业级的应用,比如网站、企业内部应用、实时交易系统等等,直到某一天突然发现做的系统咋就这么慢呢,而且时不时还来个内存溢出什么的,今天是交易系统报了StackOverflowError ,明天是网站系统报了个OutOfMemoryError ,这种错误又很难重现,只有分原创 2021-08-24 15:33:06 · 269 阅读 · 0 评论 -
万字长文!深入详解Java垃圾回收(GC)机制
一、为什么需要垃圾回收如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。二、哪些内存需要回收?哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象?1、引用计数法这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。任何时刻计数值为0的对象原创 2021-08-23 20:14:56 · 318 阅读 · 0 评论 -
牛客网真实面经总结—JVM篇
最近在牛客网上看到很多程序员面试都被问到JVM相关的一些问题,为了让大家更好的参考,我把这些JVM相关面试题都整理了一下,然后自己也做了一些解答,如果有什么不对的欢迎大家在评论区告诉我,大家一起交流学习!作为阅读福利,我整理了一些Java面试题(有脑图、手写pdf、md文档),需要的可【点击此处】获取!请简单描述一下JVM加载class文件的原理是什么?考察点:JVM参考回答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行原创 2021-08-14 17:25:03 · 383 阅读 · 0 评论 -
高频面试题-请把Java垃圾回收器说清楚!
深入理解Java虚拟机一书中写到:如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。不同的时代,出现了不同了垃圾收集器,它们被不断的应用在各个版本的Java虚拟机中。首先来画一张图,将具体的几个垃圾收集器展示出来。上图就是我们要说的一共七种收集器,图中一共分为两大部分,上半部分(Serial、ParNew、Parallel Scavenge)分属于新生代收集器,下半部分(CMS、Serial Old、ParNew Old)分属于老年代收集器,而G1算是一个特殊的收集.原创 2021-08-09 20:56:06 · 135 阅读 · 0 评论 -
字节最喜欢问的24道JVM面试题,背废完虐面试官!
前言JVM 一直都是面试的必考点,大家都知道,为了让大家更好的应对JVM面试题,我把经典的24道JVM面试题总结了一下并附有解析,希望能够帮助大家更好的理解JVM,在面试中吊打面试官。小编也把JVM面试题整理成了PDF文档,方便大家更好的阅读查看,其他Java相关的面试题,我也整理出来了,需要的可【点击此处】领取!1.JVM内存结构 方法区和对是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私有的内存区域。Java堆(Heap),是Java虚拟机所管理的原创 2021-08-07 16:54:00 · 158 阅读 · 0 评论 -
【直通阿里】10个JVM面试必问题,你能答出几个?
注:文末有福利,记得领取~01 内存模型以及分区,需要详细到每个区放什么?1.1 栈区栈分为java虚拟机栈和本地方法栈重点是Java虚拟机栈,它是线程私有的,生命周期与线程相同。每个方法执行都会创建一个栈帧,用于存放局部变量表,操作栈,动态链接,方法出口等。每个方法从被调用,直到被执行完。对应着一个栈帧在虚拟机中从入栈到出栈的过程。通常说的栈就是指局部变量表部分,存放编译期间可知的8种基本数据类型,及对象引用和指令地址。局部变量表是在编译期间完成分配,当进入一个方法时,这...原创 2021-08-07 15:51:18 · 225 阅读 · 0 评论 -
【JVM系列】浅谈双亲委派和破坏双亲委派
一、前言笔者曾经阅读过周志明的《深入理解Java虚拟机》这本书,阅读完后自以为对jvm有了一定的了解,然而当真正碰到问题的时候,才发现自己读的有多粗糙,也体会到只有实践才能加深理解,正应对了那句话——“Talk is cheap, show me the code”。前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数据库驱动Driver为例,为什么要实现破坏双亲委派,下面一起来重温一下。二、双亲委派想要知道为什么要破坏双亲委派,就要先从什么是双亲委派说起,在此之前,我们原创 2021-08-07 14:14:58 · 196 阅读 · 0 评论 -
【JVM调优 】 快速定位服务CPU过高(理论+实战)
在生产环境中,有时会遇到一些CPU占用过高,一直下不去的场景。出现这种情况,可能会导致服务对外中断,服务器超负荷运行影响硬件寿命。这篇文章从实践出发,一步一步地分析如何使用top和jstack命令快速定位问题代码位置。一、top命令top (table of processes) is a task manager program, found in many Unix-like operating systems, that displays information about CPU an.原创 2021-08-03 16:19:25 · 398 阅读 · 2 评论 -
【备战秋招冲击大厂】Java面试题系列—JVM及垃圾回收机制
1. JVM JVM的作用:解释运行字节码程序消除平台相关性。jvm将java字节码解释为具体平台的具体指令。一般的高级语言如要在不同的平台上运行,至少需要编译成不同的目标代码。而引入JVM后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。 JVM知识结原创 2021-07-23 14:57:10 · 299 阅读 · 0 评论 -
<面试必过系列>2021最新JVM核心知识点+大厂常见面试真题【附解答资料】
前言如果你经常注意面试题,你会发现现在面试题多多少少会含有jvm相关的面试题,随着互联网的发展,高并发高可用、快速响应成为软件的必须,而JVM与这些有着密切关联。今天我们就来谈谈如何学习jvm以及jvm常见面试题。由于文章篇幅问题,我会以图片的形式展示所有的问题及答案,考虑方便大家的查看,我也把知识点+面试题整理成pdf文档,以供大家学习,如需原件学习,可在文末领取!!!JVM核心知识点1.JVM基本概念2.线程3.JVM内存区域4.JVM运行时内存5.垃圾回收与算法6原创 2021-06-25 22:04:03 · 204 阅读 · 2 评论 -
【JVM性能优化】服务发生OOM故障定位方案
前提概要对于JVM服务而言出现了OOM(Out Of Memory)问题,并且对其进行相关的解决是作为一个Java技术栈人员必备的实战能力。在此总结了一些相对通用的方案,希望能帮助到大家。分析原因某Java服务出现了OOM,最常见的原因为:有可能是内存分配确实过小,而正常业务使用了大量内存(正常现象)某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽(内存泄漏、代码问题)某一个资源被频繁申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接(线程不断创建、代码问题原创 2021-06-21 16:01:11 · 385 阅读 · 0 评论 -
<面试必过系列>2021最新JVM大厂必问面试题【附解答】
点赞再看,养成好习惯!嗨咯,大家好,今天给大家整理了一些JVM必问的大厂面试题,起因是我的学弟在网上刷了无数面试题,然后前两天信心满满的去阿里面试,没想到在一面的时候被HR问到 “如何判断一个对象是否存活?(或者 GC 对象的判定方法)” 然后卡壳了…我真的想敲死他,这个不是我跟他讲过的要看的知识点吗?然后学弟弱弱的跟我讲,他刷了网上很多面试题,但是没有看到这道题。当时我的内心一万个草泥马跑过…好吧,为了让大家不在JVM这个题目上被刷下来,我特意去看了今年所有大厂的面试题,整理出下面这些JVM必问.转载 2021-06-08 16:59:45 · 218 阅读 · 0 评论