JVM-类加载、GC回收机制
类加载
1、通过一个类的全限定名(包名与类名)来获取定义此类的二进制字节流(Class文件);
2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;
3、在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口;
类连接
1、验证:验证被加载后的类是否有正确的结构,类数据是否会符合虚拟机的要求
2、准备:为类的静态变量(static filed)在方法区分配内存,并赋默认初值(0值或null值)
3、解析:将类的二进制数据中的符号引用换为直接引用
类的初始化
为静态变量赋程序设定的初值
类加载器
双亲委派模型:主要体现在ClassLoader的loadClass()方法,思路:先检查是否已经被加载过,若没有加载则调用父类加载器的loadClass()方法,若父类加载器为空则默认使用启动类加载器作为父类加载器。如果父类加载器加载失败,抛出ClassNotFoundException异常后,调用自己的findClass()方法进行加载。
“相等”判定相关方法
1、判断两个实例对象的引用是否指向内存中同一个实例对象,使用 Class对象的equals()方法,obj1.equals(obj2);
2、判断实例对象是否为某个类、接口或其子类、子接口的实例对象,使用Class对象的isInstance()方法,class.isInstance(obj);
3、判断实例对象是否为某个类、接口的实例,使用instanceof关键字,obj instanceof class;
4、判断一个类是否为另一个类本身或其子类、子接口,可以使用Class对象的isAssignableFrom()方法,class1.isAssignableFrom(class2);
JVM的GC机制
Java GC机制主要完成3件事:确定哪些内存需要回收,确定什么时候需要执行GC,如何执行GC。
从4个方面学习Java GC机制:
1.内存是如何分配的;
2.如何保证内存不被错误回收(即哪些内存需要回收);
3.在什么情况下执行GC以及执行GC的方式;
4.如何监控和优化GC机制;
JVM-类加载、GC回收机制相关推荐
- Android工程师进阶第一课 夯实Java基础 JVM内存模型和GC回收机制
开篇词:跳出舒适区,走在Android行业的前端 你好,我是姜新星,一个深耕 Andorid 领域的老工程师. 记得 2010 年毕业典礼上,某位老师说"你们是最幸福的一届毕业生,正好赶上中 ...
- JVM分代回收机制和垃圾回收算法
JVM系列文章目录 初识JVM 深入理解JVM内存区域 玩转JVM对象和引用 JVM分代回收机制和垃圾回收算法 细谈JVM垃圾回收与部分底层实现 Class文件结构及深入字节码指令 玩转类加载和类加载 ...
- java gc回收机制种类_JAVA的垃圾回收机制(GC)
1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 2.什么时候 ...
- jvm垃圾回收机制_深入理解JVM的垃圾回收机制
如何判断对象已"死" Java堆中存放着几乎所有的对象实例,垃圾回收器在堆进行垃圾回收前,首先要判断这些对象那些还存活,那些已经"死去".判断对象是否已&qu ...
- 细说JVM的垃圾回收机制
什么是垃圾回收? 从字面看来,按字面意思来理解就是--找到垃圾对象并将他们抛弃掉:事实却正好相反,垃圾回收是把处于活动状态的对象找出来,而将剩余的对象标记为垃圾对象.基于此理论,我们来详细描述java ...
- Java虚拟机(三)——初识JVM的垃圾回收机制
前言 对于程序计数器.虚拟机栈.本地方法栈这三个部分而言,其生命周期与相关线程有关,随线程而生,随线程而灭.并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回 ...
- 【phar反序列化与GC回收机制的利用】
认识phar phar是什么?简单来说就是把php压缩而成的打包文件,无需解压,可以通过phar://协议直接读取内容 ,大多数PHP文件操作允许使用各种URL协议去访问文件路径:如data://,z ...
- 【JVM】垃圾回收机制及算法
垃圾回收机制及算法 一.垃圾回收概述 二.对象是否存活 1. 判断对象是否存活 - 引用计数算法 2.判断对象是否存活-可达性分析算法 1.可达性分析算法 2.JVM之判断对象是否存活 3.关于引用 ...
- JVM的垃圾回收机制详解和调优
1.JVM的gc概述 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存.java语言并不要求jvm有gc,也没有规定gc如何工作.不过常用的jvm都有gc,而且大多数gc都使用类似的 ...
- 浅谈Java虚拟机JVM的垃圾回收机制
1. 什么是垃圾 要回收垃圾,那么垃圾是什么?简单的逻辑就是不会再被使用的内存对象呗. 2. 怎么判断不再被使用 2.1 引用计数法.统计有多少个引用指向内存对象,如果没有引用指向内存对象,那么该内存 ...
最新文章
- java jlist 更新_java – 更新JList
- 自由自在珍珠奶茶以市场细分来创新品牌
- 北交的计算机和北理,北航与北理
- linux集群流程运行,linux 怎么配置集群
- Linux教程:内核怎样管理你的内存
- Http报头Accept与Content-Type的差别
- Hdu 5036 Explosion
- params参数的调用
- cookie和session的区别及其原理
- 安卓psp模拟器联机教程_安卓PSP模拟器评测:蜘蛛侠2
- CDN是什么?CDN的工作原理?使用CDN有什么优势?
- 北科大学计算机考研难度,2019二本考上北科计算机专硕经验分享
- linux 内核 谁在维护,[转载]Linux 内核维护者封杀明尼苏达大学
- 软件技术实训室建设方案(完整版)2022
- 同样是搞IT,差距怎么这么大呢,快来看看互联网行业最富有的100人
- Ipad项目中用到的UIModalPresentationFormSheet,点击阴影部分dismiss 当前presented的controller
- Flutter 2.0 Null-Safety(空安全)使用和理解
- E.04.02 Zoom Fatigue: The Differing Impact on Introverts and Extroverts
- 汇编指令与Intrinsics指令的对应关系汇总
- 与广东未来科技:怀揣初心,并肩同行
热门文章
- IPSEC 004 ---- 模板海纳百川,不定对端有容乃大
- android java程序中调用shell命令
- python结构模式_Python程序中的观察者模式结构编写
- python 异常处理小结 try except raise assert
- leetcode 292 NimGame
- ipv6 华为交换机 路由配置_华为路由器单臂路由的配置方法及小案例
- linux sed批量更改文件,Linux利用sed批量修改文件名(示例代码)
- java trim 换行符_JAVA去掉字符串左右两边的回车、空格、制表符、换行符
- php正则替换%3cbr%3e_php去除换行符的几种方法(str_replace正则和PHP_EOL)
- 论文评审最大流_毕业论文_最大流问题及其应用(7)(喜欢就下吧)