![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 78
yours_棒棒糖
间歇性踌躇满志,持续性混吃等死!!!难搞喔!!
生活不易,继续前行,为了成为最好的自己!
刷题记录,博客:https://github.com/can19960229/Candy_leetcode
展开
-
JIT 即时编译 原理解析及实践
singleDoc# 《JIT 即时编译》转载 2024-01-07 23:28:38 · 75 阅读 · 0 评论 -
【JVM】JVM垃圾回收机制&&老年代空间担保机制
jvm垃圾回收机制&&老年代空间担保机制JVM的GC回收流程图对先生代和老年代的回收算法进行文字的描述:研究表明,新生代中的对象大都是“朝生夕死”的,即生命周期非常短而且对象活得越久则越难被回收。在发生GC时,需要回收的对象特别多,存活的特别少,因此需要搬移到另一块内存的对象非常少,所以不需要1:1划分内存空间。而是将整个新生代按照8 : 1 : 1的比例划分为三块,最大的称为Eden(伊甸园)区,较小的两块分别称为To Survivor和From Survivor。首次GC时,原创 2021-06-09 22:32:27 · 364 阅读 · 0 评论 -
【JVM】JVM性能调优——JVM内存模型及垃圾收集算法、内存泄露及解决方法、性能调优
目录一、JVM内存模型及垃圾收集算法二、内存泄漏及解决方法三、性能调优JVM调优总结:JVM调优调优的基本概念什么是调优调优,从规划开始案例分析-Xmx1024m -Xms1024m -Xmn512m -Xss256k扩展参数说明:一、JVM内存模型及垃圾收集算法1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,由虚拟原创 2021-06-05 21:55:55 · 630 阅读 · 1 评论 -
【JVM】JVM调优的一些概念、规划、案例分析
JVM调优调优的基本概念QPS:每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS:就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。吞吐量:用户代码时间 /(用户代码执行时间 + 垃圾回收时间)吞吐量越大,说明拿出时间干正经事的时间越多响应时间:STW越短,响应时间越好原创 2021-06-04 21:00:29 · 128 阅读 · 1 评论 -
【JVM】关于GC的一些问题,面试常问
目录0)为什么需要GC 垃圾回收呢?0)Java的回收机制1)可能导致Full GC:2)System.gc()的理解3) Java垃圾回收--强引用、软引用、弱引用、虚引用强引用——**OOM不回收**软引用——内存不足时回收弱引用——发现就回收虚引用——对象回收跟踪4)减少系统的停顿时间(STW)的算法——增量收集算法,分区算法5)STW(stop the world)6)分代收集算法——年轻代回收算法、老年代回收算法7)判断一个对象是否可以被回收8)解释一下对象的finalization机制0)为什原创 2021-05-30 21:23:46 · 302 阅读 · 0 评论 -
【JVM】Java垃圾回收--强引用、软引用、弱引用、虚引用
Java垃圾回收–强引用、软引用、弱引用、虚引用有这些引用,是当内存空间还足够的时候,会保留这些引用在内存中,但是一旦内存空间在垃圾收集后还是很紧张,则可以抛弃这些对象。Java执行GC判断对象是否存活有两种方式其中一种是引用计数。引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。引用计数就是判断一个对象是否被任何变量引用,则对象的引用划分为4种级别。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。强引用——OOM不回收无论任何情原创 2021-05-30 21:06:22 · 452 阅读 · 0 评论 -
【JVM】GC的基础知识——垃圾回收算法、内存分代模型、常见的垃圾回收器(CMS 、 G1)
GC的基础知识1.什么是垃圾C语言申请内存:malloc freeC++: new deleteJava: new ?自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题:忘记回收多次回收没有任何引用指向的一个对象或者多个对象(循环引用)2.如何定位垃圾引用计数:有引用的时候进行加一,没有引用的时候进行减一,等于0的时候则为垃圾。但是循环引用的对象引用计数不能找到这个垃圾,此时称为内存泄露。(引用计数不能解决循环引用的问题)根可达算法:通过GC原创 2021-05-30 00:26:14 · 468 阅读 · 0 评论 -
【JVM】哪些场景会产生OOM,怎么解决?
第一次面试就遇到面试官这么问我,当时的我措手不及,然后硬答,只知道OOM发生在Java内存区域的四个地方,分别发生在堆内存溢出,方法区,直接内存溢出,栈内存溢出(栈分为虚拟机栈和本地方法栈,一般HotSpot虚拟机不区分)。Jprofiler进行OOM内存溢出分析:关于Jprofiler的使用安装堆内存溢出原因:大量创建对象实例,并且GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量超过最大堆的大小限制,从而造成OOM。堆的最小值参数 -Xms堆的最大值参数 -原创 2021-05-29 15:17:07 · 597 阅读 · 1 评论 -
【JVM】JVM类的生命周期,类加载,双亲委派模型与破坏双亲委派模型
类加载-初始化(类的生命周期)一个类的完整生命周期:1. 加载过程所谓加载,简而言之就是将 Java 类的字节码文件加载到机器内存中,并在内存中创建一个java.lang.Class对象。类的加载过程是由类加载器来完成,类加载器由JVM提供。我们开发人员也可以通过继承ClassLoader来实现自己的类加载器。加载的class来源从本地文件系统内加载class文件从JAR包加载class文件通过网络加载class文件把一个java源文件动态编译,并执行加载。2. 连接过程通过类.原创 2021-05-27 23:24:10 · 141 阅读 · 0 评论 -
【JVM】 Java内存区域——运行时数据区域
Java内存区域基本问题JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtiome data area)Java内存区域——运行时数据区域JDK1.6JDK1.8线程私有的:程序计数器虚拟机栈本地方法栈线程共享的:堆方法区直接内存 (非运行时数据区的一部分)(一)程序计数器方便面试总结话术:程序技术器就是当前线程所执行的字节码的行号指示器。多线程是通过轮转切换并分处理器执行时间的方式来原创 2021-05-23 23:35:59 · 148 阅读 · 3 评论