![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
jvm
深入学习jvm相关知识 研究并掌握相关调优技巧
打码王子
这个作者很懒,什么都没留下…
展开
-
垃圾回收算法与垃圾回收器详解
一、垃圾回收算法 一般对jvm的垃圾回收算法都是基于分代收集思想实现的,基于jvm的堆内存分代的划分,一般根据对象在堆中的存活周期,划分为年轻代和老年代,基于不同代的特点选择最合适的垃圾回收算法,一般有三种算法: 下面仔细分析下各种算法 1.标记-复制 标记-复制算法是通过标记出非垃圾对象(存活对象),并且把存活对象复制到堆中另外一块空白内存中,然后把原来的内存空间全部回收掉。一般用于年轻代 标记复制算法一般把内存分为大小相等的两块,一块用于分配对象,一块作为保留内存空间(暂时不使用)。.原创 2020-07-01 18:14:15 · 269 阅读 · 0 评论 -
jvm之对象的创建与内存模型解析
一、对象的创建 之前一篇详细分析过类的加载,本篇主要记录分析对象的创建步骤以及jvm内存的分配。 直接上图 显而易见,对象的创建大致经过7个步骤: 1.类是否加载判断,如果想要创建一个类的实例对象,首先这个类是要被加载完成之后才可以,所以第一步就要判断类是否被加载过,若未被加载,则先加载类。 2.内存分配,创建对象之前首先需要在堆中分配一块足够大的内存空间,具体多大,这个在对应的类加载完成之后,jvm就已经可以确定这类的对象需要占用多大的内存了,所以只要在堆内存中划分一块确定的内存空间即可。内原创 2020-06-22 16:06:31 · 322 阅读 · 0 评论 -
jvm之类加载机制解析
一、程序如何运行的 首先,我们都知道,java程序写好之后,打成jar包或者war,然后丢到服务器上启动运行,但是,到底是怎么运行的呢?java虚拟机在这里面怎么工作的?又是谁推动jvm的运转工作? jvm底层是使用C++语言实现的,首先C++会帮我们创建jvm,然后把程序代码丢到jvm内存中,并且调用main方法,用以启动程序。 在把程序代码丢入到jvm内存中的过程就是对类的加载,在程序执行中,只有被加载好的类才能拿来使用。 那么类加载,需要一个专门用来加载类的工具,我们称之为类加载器。 .原创 2020-06-11 17:26:17 · 235 阅读 · 1 评论 -
并发篇之线程池
一、线程池 在java中,“做事”一般是由线程来做的。在程序运行过程中,每一个请求过来,都会分配一个线程处理请求,处理完之后,线程被销毁。所以锁,程序运行中,有很多的线程在不断的被创建和销毁,而线程的创建和销毁会带来大量的系统开销,特别是在请求量巨大的时候,这写开销显得尤为严重。 因此,线程池应运而生,线程池是一种池化技术,用来缓存线程,进行线程的管理,优化和调度,线程池中不仅有线程,还有任务。 例如: 工厂的老板,在生产一件产品时,去外面招一个工人来生产,生产完成后把工人辞退,再次生产,则中心招人原创 2020-06-18 15:45:16 · 279 阅读 · 1 评论