![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 75
ayu_programer
不积硅步,无以至千里
展开
-
JVM篇--JVM调优高频面试题
1 先打印gc的情况,即通过jstat -gc PID 1000 查看 GC 次数,时间等信息,看看对象的GC 次数是否频繁,而且每次回收的内存空间是否正常,如果说每次回收的内存都很少,GC非常频繁 那么可能是因为内存泄露导致的。首先我们要知道,内存飚高如果是发生在 java 进程上,一般是因为创建了大量对象所导致,而如果持续飚高意味着垃圾回收跟不上对象创建的速度,或者内存泄露导致对象无法回收。-XX:NewRatio=4:设置年轻的和老年代的内存比例为 1:4;-Xmx2g:堆最大内存为 2g;原创 2024-01-24 08:57:52 · 789 阅读 · 0 评论 -
JVM篇--垃圾回收器高频面试题
首先CMS垃圾收集器是一种1 老年代的垃圾收集器2 是以牺牲吞吐量为代价来获取最短回收停顿时间的垃圾回收器3 多线程并发的标记-清除算法所以在gc的时候会产生大量的内存碎片,当剩余内存不能满足程序运行要求时,系统将会出现 Concurrent Mode Failure,临时 CMS 会采用 Serial Old 回收器进行垃圾清除,此时的性能将会被降低。CMS 工作机制相比其他的垃圾收集器来说更复杂。初始标记只是标记一下 GC Roots 能直接关联的对象,速度很快,仍然需要暂停所有的工作线程。原创 2024-01-21 22:36:14 · 1466 阅读 · 0 评论 -
JVM篇--垃圾回收高频面试题
首先在java运行过程中,其实程序员并不需要去显示的调用程序来释放对象的内存,而是由虚拟机来完成的,具体来看是在jvm中有个垃圾回收线程,这个线程是个守护线程,这个线程会在虚拟机空闲或者在当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。回收后,已用和未用的内存都各自一边。其实jvm的垃圾回收,在我们一开始创建对象的时候,GC就会去监控这个对象的地址,大小和使用情况,而jvm在进行回收的时候主要是采用了可达性分析算法,通过这种方式确定哪些对象是"可达。原创 2024-01-18 23:21:05 · 1336 阅读 · 2 评论 -
JVM篇--Java内存区域高频面试题
以Hotspot为例,堆内存主要由GC模块进行管理和分配,可以分为新生代和老年代,而新生代又可以分为eden区,s1区和s2区,并且他们的比例默认为8:1:1, 同时新生代和老年代的占比如下图所示在使用堆内内存(on-heap memory)的时候,完全遵守JVM虚拟机的内存管理机制,采用垃圾回收器(GC)统一进行内存管理,原创 2024-01-14 22:40:08 · 1146 阅读 · 0 评论 -
如何定位和解决频繁Young GC问题
如何来分析一个项目的gc情况:首先通过命令: jstat -gc pid 1000 1000来执行 分析然后具体需要看如下这些指标1.新生代对象增长的速率: 看EU指标的变化情况(一般会大致成线性变化)2.Young GC的触发频率: 通过eden区的总大小除以新生代对象增长的速率3.Young GC的耗时:通过看YGCT指标4.每次Young GC后的存活对象大小:通过看S1U指标再ygc前后的变化情况(即当EU突然由一个很大的值变成一个很小的值时,可以看对应变化前后S1U的值)5.每原创 2022-02-12 19:00:29 · 5798 阅读 · 0 评论 -
67-阶段性复习:JVM性能优化到底该怎么做?
文章目录1、一个新系统开发完毕之后如何设置JVM参数?2、在压测之后合理调整JVM参数3、线上频繁Full GC的几种表现4、频繁Full GC的几种常见原因总结提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考1、一个新系统开发完毕之后如何设置JVM参数?首先大家应该估算一下自己负责的系统每个核心接口每秒多少次请求,每次请求会创建多少个原创 2021-02-24 21:41:42 · 108 阅读 · 0 评论 -
2-JVM中有哪些内存区域,分别都是用来干嘛的
问题1:jvm为啥会划分不同的内存区域?(首先必须要有一块区域来存放jvm加载进来的类,必须要有一块区域来存放变量和对象)所以划分为不同的内存区域就是为了在运行过程中可以根据需要来使用。问题2:那jvm的内存区域都有哪些呢?2.1 方法区(在1.8以后,这块区域的名字改为metaspace,–元数据空间) :这块区域**主要存放.class文件里加载进来的类 ,还有一些类似常量池的东西**2.2 程序计数器1)当代码被jvm加载到内存后,就需要被执行,而计算机并不认识这些代码,需要把java代原创 2021-02-17 09:35:25 · 376 阅读 · 0 评论 -
1 一探究竟:Java代码到底是如何运行起来的?
问题1:我们平时写得java代码是怎么运行起来的?我们是把这些 .java文件编译成 .class文件,通过java命令 比如说 java -jar ,而使用java命令就相当于启动了一个jvm进程,而jvm就负责运行这些.class文件,也就是我们所写的系统问题2:那jvm是怎么来运行这些 .class文件的呢?jvm如果要运行这些.classs文件,首先需要把这些文件给加载进来,也就是需要通过类加载器将这些.class字节码文件加载到jvm当中然后供后续代码使用问题2:那jvm将这些 .c原创 2021-02-16 23:12:24 · 222 阅读 · 2 评论