Jvm垃圾回收——第一章

关于JVM调优,有哪些梗值得去学习呢?

对于一样事物,我总会问自己几个问题:

1)它是什么,包括什么内容?

2)它作什么用?解决什么问题?

一、是什么?

JVM是解析和运行.class二进制文件的东西。

包括好几部分:

1)栈:基本数据类型

2)堆:引用类型

3)方法区:类字节码

4)运行时数据池

5)本地方法区

二、什么用?

.class二进制文件是java文件编译后的产物,JVM也起到了操作系统OS和Java语言之间的桥梁作用,为Java语言提供跨平台的特点,因为不同的操作系统也有对应的JVM版本。

当我们运行java程序时,会启动一个jvm进程,classpath指定了java程序所用到的类的路径,通过classpath找到类并且将类放进运行时数据区和方法区,然后执行main方法。注意,jvm只会在用到ClassA的时候,才会去加载,并且只加载一次。

java类的加载机制是采用双亲委派模型的工作方式,就是说加载类的时候,首先委托给父加载器。这样的目的是当有相同类的时候,更高层次的类起作用,防止重要的类被后来者篡改。

时间: 2024-10-14 05:37:45

Jvm垃圾回收——第一章的相关文章

Jvm垃圾回收——第二章

上文简单介绍了JVM的一些原理作为铺垫,接下来介绍一下垃圾回收. java的垃圾回收机制,主要采用的是分代回收机制. 分为: 1)新生代:新出生的对象在这里创建,又分为一个eden(伊甸园,这个名字很贴切),两个survivor区. 刚刚出生的小baby,当然放在eden, 2)旧生代:因为在新生代活的较长,在若干次内存回收后进入这,作为生命周期较长的对象. 3)持久代:主要是类二进制字节码,放在方法区. 以上三个地方就是内存回收进行的主要场地. 为什么采用这种方式呢? 我有一些自己的看法,对整

JVM垃圾回收算法 总结及汇总

先看一眼JVM虚拟机运行时的内存模型: 1.方法区 Perm(永久代.非堆) 2.虚拟机栈 3.本地方法栈 (Native方法) 4.堆 5.程序计数器 1 首先的问题是:jvm如何知道那些对象需要回收 ? 目前两种标识算法.三种回收算法.两种清除算法.三种收集器 引用计数法 每个对象上都有一个引用计数,对象每被引用一次,引用计数器就+1,对象引用被释放,引用计数器-1,直到对象的引用计数为0,对象就标识可以回收 这个可以用数据算法中的图形表示,对象A-对象B-对象C 都有引用,所以不会被回收,

JVM垃圾回收算法(最全)

JVM垃圾回收算法(最全) 下面是JVM虚拟机运行时的内存模型: 1.方法区 Perm(永久代.非堆) 2.虚拟机栈 3.本地方法栈 (Native方法) 4.堆 5.程序计数器 1 首先的问题是:jvm如何知道那些对象需要回收 ? 目前两种标识算法.三种回收算法.两种清除算法.三种收集器 引用计数法 每个对象上都有一个引用计数,对象每被引用一次,引用计数器就+1,对象引用被释放,引用计数器-1,直到对象的引用计数为0,对象就标识可以回收 这个可以用数据算法中的图形表示,对象A-对象B-对象C

JDK分析工具&JVM垃圾回收(转)

转自:http://blog.163.com/[email protected]/blog/static/10510751320144201519454/ 官方手册:http://docs.oracle.com/javase/7/docs/     ---->http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html   java命令的各种选项的说明 参考书籍: <深入理解Java虚拟机:JVM高级特性与最佳实践

必知必会JVM垃圾回收——对象搜索算法与回收算法

垃圾回收(GC)是JVM的一大杀器,它使程序员可以更高效地专注于程序的开发设计,而不用过多地考虑对象的创建销毁等操作.但是这并不是说程序员不需要了解GC.GC只是Java编程中一项自动化工具,任何一个工具都有它适用的范围,当超出它的范围的时候,可能它将不是那么自动,而是需要人工去了解与适应地适用. 拥有一定工作年限的程序员,在工作期间肯定会经常碰到像内存溢出.内存泄露.高并发的场景.这时候在应对这些问题或场景时,如果对GC不了解,很可能会成为个人的发展瓶颈. 接下来的两文将详细学习下JVM中垃圾

JVM——垃圾回收

目录: 如何判断垃圾是否回收? 引用计数法 可达性分析算法 四种引用 引用队列 垃圾回收算法 标记清除算法 复制算法 标记整理算法 分代垃圾回收 新生代 老年代 Minor GC 和 Full GC的区别 总结 垃圾回收器 原理 串行回收器 吞吐量优先 获取最短停顿时间优先(CMS) G1 垃圾回收调优  方向 新生代调优 老年代调优 案例 一.如何判断垃圾是否回收 1.1 引用计数法 在对象头处维护一个counter,每增加一次对该对象的引用计数器自加,如果对该对象的引用失联,则计数器自减.当

深入JVM垃圾回收机制,值得你收藏

JVM可以说是为了Java开发人员屏蔽了很多复杂性,让Java开发的变的更加简单,让开发人员更加关注业务而不必关心底层技术细节,这些复杂性包括内存管理,垃圾回收,跨平台等,今天我们主要看看JVM的垃圾回收机制是怎么运行的,希望能够帮到大家, 哪些对象是垃圾呢? Java程序运行过程中时刻都在产生很多对象,我们都知道这些对象实例是被存储在堆内存中,JVM的垃圾回收也主要是针对这部分内存,每个对象都有自己的生命周期,在这个对象不被使用时,这个对象将会变成垃圾对象被回收,内存被释放,那么如何判断这个对

JVM垃圾回收机制

JVM采用分代的垃圾回收策略:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 从垃圾回收角度看内存分配 从JVM垃圾回收的角度来看,Java内存分为三个区:新生代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation),如下图. 新生代: 所有新生成的对象首先都是放在年轻代的.年轻代分三个区.一个Eden区,两个Survivor区(一般而言).大部分对象在Eden区中生成.

浅析JVM垃圾回收机制

首先我们需要知道Java的内存分配与回收全部由JVM垃圾回收机制自动完成.每种JVM实现可能采用不同的方法实现垃圾回收机制.在收购SUN之前,Oracle使用的是JRockit JVM,收购之后使用HotSpot JVM.目前Oracle拥有两种JVM实现并且一段时间后两个JVM实现会合二为一.HotSpot JVM是目前Oracle SE平台标准核心组件的一部分.市面上探讨垃圾回收机制,默认都是基于HotSpot JVM的.Ok,我们切入正题,先来看下JVM的内存区域模型, 这张图非常直观的展