
JVM
小码农eve
不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍
展开
-
JVM-类装载器
一、class装载流程加载: 加载是装在类的第一个阶段,在此阶段是取得类的二进制流,转为方法区数据结构,在java堆中生成对应的java.lang.class对象链接: 链接分为三个步骤:验证、准备、解析1、验证: 目的:保证Class流的格式是正确的 文件格式的验证:是否以0xCAFEBABE开头;版本号是否合理….等等 元数据验证:是否有父类,若有父类验证父类class是否存在;继承了原创 2017-03-27 22:43:44 · 1383 阅读 · 0 评论 -
JVM-堆分析
一、内存溢出的原因分析堆溢出:创建的对象太多或太大,占用大量的堆内存,而且未及时GC;示例代码:import java.util.ArrayList;public class OOMTest { public static void main(String[] args) { ArrayList<byte[]> list=new ArrayList<byte[]>();原创 2017-03-28 12:42:17 · 387 阅读 · 0 评论 -
JVM-Class文件结构
Class文件结构Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上的空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。 根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结原创 2017-03-28 22:49:45 · 364 阅读 · 0 评论 -
JVM
JVM基本结构PC寄存器 每个线程拥有一个PC寄存器 在线程创建时 创建 指向下一条指令的地址 执行本地方法时,PC的值为undefined方法区 保存装载的类信息 类型的常量池 字段,方法信息 方法字节码 通常和永久区(Perm)关联在一起Java堆 和程序开发密切相关 应用系统对象都保存在Java堆中 所有线程共享Java堆 对分代GC来说,堆也是分代的 GC的主要工原创 2017-03-23 17:39:11 · 332 阅读 · 0 评论 -
JVM配置参数
原文地址:http://www.cnblogs.com/smyhvae/p/4736162.html 【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4736162.html 联系方式:smyhvae@163转载 2017-03-23 18:06:13 · 457 阅读 · 0 评论 -
JVM-GC算法与种类
基础概念根节点: 1、栈中引用的对象; 2、方法区中静态成员或者常量引用的对象(全局对象); 3、JNI方法栈中引用对象;可达性分析(Reachability Analysis):从根节点开始向下搜索,搜索所走过的路径称为引用链。当一个对象到根节点有引用链相连时,则证明此对象是可达对象;可复活对象:在finalize()方法中复活的对象;不可达对象:既没有引用链又不可复活的对象,称之为不可达对原创 2017-03-24 17:30:31 · 439 阅读 · 0 评论 -
JVM-GC参数
一、堆的回顾堆(java heap)包括新生代(Young Generation)和老年代 (old); 其中新生代包括区域(eden、s0、s1); 大多数新创建的对象在新生代产生,有两种情况回使java新创建的对象在老年代,一种是大的数组对象,且对象无外部引用;另一种是通过启动参数设置上面的新生代区域很小,使得新创建的对象大小超出新生代大小,则对象会被直接分配到老年代; s0,s1(幸存代原创 2017-03-26 15:21:14 · 539 阅读 · 0 评论