![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
文章平均质量分 90
JVM
童话ing
放弃不难,但坚持一定很酷。
展开
-
【JVM】JVM中JIT的详细探索
[[toc]]前言解释器:只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。特点:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。编译器:把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。特点:在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的执行效率。两者的协作:在程序运行环境中内存资源限制较大时原创 2021-07-17 17:00:38 · 1652 阅读 · 0 评论 -
【JVM】对象实例化过程?以及为什么只能父类引用指向子类实例,不能子类引用指向父类实例?
一、对象的实例化首先我们需要知道,对象的实例化过程是分成两部分:类的加载初始化,对象的初始化。也就是说,要创建类的对象实例需要先加载并初始化该类,main方法所在的类需要先加载和初始化类初始化就是执行<clinit>方法,对象实例化是执行<init>方法,一个子类要初始化需要先初始化父类。1.1 类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期将会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中验证、准备、解析这三个部分合称为连接。原创 2021-06-06 15:51:46 · 1161 阅读 · 2 评论 -
【JVM】一个Java对象到底占多少个字节?
文章目录一、JAVA对象模型1.1 对象头(Header)1.2 内存对齐二、非空对象占用内存计算三、总结问题一个Java对象到底占多少个字节?了解这个之前我们先来了解一下Java对象模型,这将对我们理解具有帮助。一、JAVA对象模型 我们先了解一下,一个JAVA对象的存储结构。在Hotspot虚拟机中,对象在内存中的存储布局分为 3 块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。1.1 对象头(Header) 对象头,又包括三部分:M原创 2021-05-17 16:42:53 · 5801 阅读 · 2 评论 -
【JVM】一文了解双亲委派机制及其作用
双亲委派机制 双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此(递归的去查找),只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。显然,在介绍双亲委派机制的时候,不得不提ClassLoader。再说ClassLoader之前,我们得先了解下Java的基本知识。Java是运行在Java的虚拟机(JVM)中的,但是它是怎么就运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码原创 2020-11-23 09:51:28 · 2197 阅读 · 8 评论 -
【JVM】IO多路复用的三种机制Select,Poll,Epoll以及BIO、NIO、AIO
关于IO面试经常会涉及到阻塞、非阻塞、同步、异步、多路复用、IO多路复用的三种机制Select,Poll,Epol以及BIO、NIO、AIO等几个知识点。前言在介绍内容之前,首先了解一下Linux操作系统中基础的概念:用户空间 / 内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保原创 2021-04-25 21:38:34 · 652 阅读 · 0 评论 -
【JVM】Jprofiler简单分析OOM
在上篇文章中,我们了解了如何Dump heap文件,本文中,我们简单使用工具进行OOM分析。首先去网上下载安装Jprofiler。安装好之后在IDEA中安装Jprofiler插件。然后我们简单准备一个OOM的程序。public class TestOOM { public static void main(String[] args) { String str="22333333344"; while(true){ str+=str+n原创 2021-04-13 16:29:57 · 253 阅读 · 1 评论 -
【JVM】Java程序生成Heap dump几种方式
1、Heap Dump概述Heap dump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况。Heap dump文件是指定时刻的Java堆栈的快照,是一种镜像文件。Heap dump一般都包含了一个堆中的Java Objects, Class等基本信息。同时,当你在执行一个转储操作时,往往会触发一次GC,所以你转储得到的文件里包含的信息通常是有效的内容(包含比较少,或没有垃圾对象了) 。我们可以这么理解:heap dump记录内存信息的,thread dump是记录CPU信息的。Heap D原创 2021-04-13 16:05:38 · 6799 阅读 · 0 评论 -
【JVM】一文了解JVM垃圾回收(GC)
纯转载文章,方便翻阅。原文地址:给同事讲了一遍GC后,他要去面试,年轻人,就是容易冲动!# 什么是垃圾什么是垃圾,就是没有任何引用指向的一个对象或者多个对象(循环引用),但是他们却依然占据着内存空间。GC是一种自动的存储管理机制。当一些被占用的内存不再需要时,就应该予以释放。这种存储资源管理,称为垃圾回收。就像我们的衣柜一样,我们里面可能存放这很多衣服,有可能几个月或者几年都不会穿过一次,但是这些我们不穿的衣服一直霸占着我们的衣柜(内存),我们把这些不会穿的衣服扔掉的或者捐赠出去,这样我们就可以.转载 2021-04-03 21:30:29 · 335 阅读 · 0 评论 -
【JVM】深入理解Java中的逃逸分析
纯转载文章,方便翻阅。原文地址:深入理解Java中的逃逸分析在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件。第二段编译是把.class转换成机器指令的过程。第一段编译就是javac命令。在第二编译阶段,JVM 通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢很多。这就是传统的JVM的解释器(Interpreter)的.转载 2021-04-03 16:09:28 · 352 阅读 · 0 评论