JVM
文章平均质量分 93
吴里斯蒂亚诺_翀纳尔多
我知道我很帅,而且我也知道我不仅仅是帅,但是帅,却是一辈子的事情。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
从头开始学习->JVM(十一):垃圾收集(下)
前言在前两篇文章中,我对垃圾收集的思想和垃圾收集的行为都有了一定的分析,但是我们要知道的是,垃圾收集这种操作,是实实在在的存在于一个垃圾收集器中的。不同的垃圾收集器,可能会使用不同的垃圾收集思想,不同的垃圾收集算法,不同的垃圾收集行为。也因此,如果要真正的理解我们的垃圾收集,我们需要深入到每一个的垃圾收集器中,才能了解到这些思想,这些算法,这些行为,错乱组成的各个垃圾收集器,会有哪些优势和劣势,这样我们才能更深入的明白关于JVM的垃圾收集。正文垃圾收集器的发展历史已经非常久远了,远的有出名的单线程.原创 2021-02-02 09:23:23 · 178 阅读 · 0 评论 -
从头开始学习->JVM(十):垃圾收集(中)
前言关于垃圾收集的一些理论基础,我在上一篇文章《从头开始学习JVM(九):垃圾收集(上)》中已经讲述完了,本文讲的是具体的如何实现的问题。但是要注意的是,本文所讲的东西,都是基于上一篇文章的理论基础上的,所以再看本篇文章之前,笔者非常建议您先去看上一篇文章,然后再来看本文,这样才能对垃圾收集有一个整体的,闭环的印象。当然,如果您觉得您对垃圾收集的理论部分,有着自己独特的见解,不需要我的讲解的话,那您也可以直接看本文。正文垃圾收集器,非常的复杂,网络上的博客对这些东西的讲述,也是千奇百怪,如果对这.原创 2021-02-01 15:49:09 · 158 阅读 · 0 评论 -
从头开始学习->JVM(九):垃圾收集(上)
前言垃圾收集,在JVM的世界中,是属于非常重要的一环。为了实现控制反转设计原则,java通过一种方式,依赖注入,将java对象的生成和销毁都交给了我们的java程序自己解决,也就是说,java程序不会控制自己对象的生命周期,那么如果我们的JVM没有管理对象的生成和销毁,那么就会导致我们的程序生成的java对象堆满了我们的JVM内存,导致内存不断的出现内存溢出的情况。于是,JVM有了垃圾收集这一环节,目的自然就是为了保证我们的JVM不出现内存溢出等问题。在JVM中,程序计数器、虚拟机栈、本地方法栈3.原创 2021-02-01 15:48:27 · 470 阅读 · 0 评论 -
从头开始学习->JVM(八):运行时数据区(下)
前言在上一篇文章中,我们了解到了JVM的运行时数据区,基本被划分了5个区域。程序计数器(pc寄存器)java虚拟机栈本地方法栈java堆方法区(永久代,元空间)。而上一篇文章中,我们详细的讲解了关于线程私有的3个区域,程序计数器,java虚拟机栈,本地方法栈。而本文则讲解的是线程共享的两个区域,java堆和方法区(元数据)。java堆Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。由于Java堆是垃圾收集器管理的内存区域,因此一些资料中它也被称作“GC堆”(Garba.原创 2021-02-01 15:47:45 · 221 阅读 · 0 评论 -
从头开始学习->JVM(七):运行时数据区(上)
前言在上一篇文章中,我们提到了关于线程和JVM之间的关系,线程不是由JVM直接控制的,而是由我们的操作系统来控制。我们java程序对线程的调用,最后也是通过调用操作系统的关于线程的操作来调用。当然,我们知道,线程的调用和我们JVM的运行时数据区也有一定的关联。在JVM内存划分区域的过程中,有些区域是随着线程的诞生和销毁而存在的,而有些区域则是一直存在于JVM中,和线程没有关系。接下来,我们来了解一下JVM的运行时数据区。正文在我们正式进入JVM运行时数据区之前,我们先从看一张图。从图中我们可.原创 2021-02-01 15:46:40 · 252 阅读 · 0 评论 -
从头开始学习->JVM(六):线程和JVM的关系
前言在前面关于类加载器的文章中,我们可以看到,类加载器通过java类的字节码文件,创建出了Class对象,并且通过加载-验证-准备-解析-初始化等一系列流程,将java类加载到JVM中,直到这个时候,JVM才会将主导权移交给java应用程序。这个时候,我们的java程序就可以跑动起来了。当java程序开始跑动起来的时候,线程和对象也纷纷产生,随着程序的跑完,也纷纷消亡。对象的产生和消亡,无疑是和JVM中的运行时数据区相关的,但是今天我们先不去深究这方面,我们先对线程来进行深一层次的了解和解析。正文.原创 2021-02-01 15:45:53 · 706 阅读 · 0 评论 -
从头开始学习->JVM(五):类加载器(下)【源码分析】
前言上一篇文章,《从头开始学习JVM(四):类加载器(中)》,我们知道了类加载器的基本原理,但是知道了这些原理之后,我们对类加载器的底层的逻辑,算不上有多清楚明白。我们仅仅是意识到,类加载器的种类有多少,类加载器的加载机制双亲委派模型以及如何打破双亲委派模型等等等相关的一些原理。但是在这些原理的背后,是什么在支撑着呢?想一想吧,所谓的JVM,本身就是一直概念上的产物,并不是物理上的东西,那么作为JVM一部分的类加载器,以及我们的类加载流程,也只是我们在概念上的划分。而支持着这些概念上划分的,就是我.原创 2021-02-01 15:45:03 · 153 阅读 · 0 评论 -
从头开始学习->JVM(四):类加载器(中)
前言上一篇文章,我们了解到类的加载流程,是由加载,验证,准备,解析,初始化这5个阶段组成的。我们也对这5个阶段进行了较为详细的解读,在这个解读的过程中,我们发现,类加载器主要是在加载阶段起到了作用。当然,我们当时没有对类加载器有进一步的了解,而今天的这篇文章,就主要集中在了类加载器身上。在文章开始之前,我们要先明白一件事情,即便我们对类加载器有了深刻的了解,也不代表着我们对类加载的整个流程有了多大的认知,这只能说是我们在JVM这个浩瀚的海洋中,捞取了小小的一瓢水而已,微不足道,且无足挂齿。所有我们要抱.原创 2021-02-01 15:44:17 · 157 阅读 · 0 评论 -
从头开始学习->JVM(三):类加载器(上)
前言我们现在都知道了,JVM是java这门语言的基础,是java这门语言得以发扬光大的基础,是java程序运行的平台,是实现java特性的一个必要前提。但是,JVM是具体做了什么工作呢?对于这个问题,我们依然还不清楚。因此,我们需要要深入的去了解一下JVM。这,也是我的一系列文章的主要目的。我们先来看一张图:这张图,显示的是JVM的主要组成部分。我们发现,我们的java程序编译后形成的class字节码文件,是通过JVM中的类加载器加载到我们的JVM中的,那么,类加载器的加载过程,是怎么样的呢?.原创 2021-02-01 15:43:31 · 152 阅读 · 0 评论 -
从头开始学习->JVM(二):为什么java需要JVM(Java虚拟机)?
前言在我们对java的越发了解之后,我们开始把注意力投到了java虚拟机这一块。我们意识到,java所谓的“Write Once,Run Anywhere”的特性,就是基于JVM才能够实现的。那么我们就会好奇,为什么JVM会有这样的功效呢?而且在探索的过程中,我们发现,JVM不仅是涉及到了“Write Once,Run Anywhere”的特性,而且还涉及到了java程序的性能问题,于是我们发现,我们必须要去深入的了解一下JVM。正文对JVM的研究,千头万绪,如果直接进入JVM的世界,我们可能还.原创 2021-02-01 15:42:14 · 548 阅读 · 1 评论 -
从头开始学习->JVM(一):java内存模型(JMM)不是java虚拟机内存模型(JVM)哦!
前言在进入jvm的世界之前,我要先给大家整理一个概念上的细节,java内存模型和jvm内存模型,是两回事哦。在网上很多朋友的博客上,都会无意识的将java内存模型和jvm内存模型混为一谈,这让一部分不明白真相的看客都会以为是这样,但是实际上java内存模型和jvm内存模型,在概念上来讲是两回事,当然,不能否认的是这两者有着极大的关联性,甚至某种意义上来讲,JVM是JMM的实现方式,JMM是为JVM服务的,但是不能因为这样,就把两者混为一谈哦。(主要就是因为JMM是为多线程服务的,而JVM中也有为多线程.原创 2021-02-01 15:40:42 · 235 阅读 · 0 评论
分享