原文出处: ziwenxie 如下图所示,JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。 加载 加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非 ...
分类:
其他好文 时间:
2017-06-25 23:10:13
阅读次数:
245
Jconsole: Visial VM: 1、主要功能: (1)显示虚拟机进程及进程的配置和环境信息(jps,jinfo); (2)监视应用程序的CPU、GC、堆、方法区及线程信息(jstat,jstack); (3)dump及分析堆转储快照(jmap,jhat); (4)方法级的程序运行性能分析, ...
分类:
其他好文 时间:
2017-06-24 18:36:46
阅读次数:
143
1、垃圾收集算法(方法论): 定义:JVM通过GC来回收堆和方法区中的内存。 GC的基本原理:首先会找程序中不再被使用的对象;然后回收这些对象所占用的内存。 算法分类: (1) 按照基本回收策略分: <1>引用计数(Reference Counting): 比较古老的回收算法。原理是此对象有一个引用 ...
分类:
编程语言 时间:
2017-06-24 18:35:54
阅读次数:
215
1、对象访问: 在java语言中,对象访问如何进行的? (1)最简单的访问,也会涉及java栈、java堆和方法区这三个最重要的内存区域之间的关联关系。 Object obj = new Object(); <1> “Object obj”:反应到java栈的本地变量表中,作为一个reference ...
分类:
其他好文 时间:
2017-06-24 18:30:23
阅读次数:
206
JVM启动过程包括:加载、连接、初始化 1.加载:就是将class文件加载到内存。详细的说是,将class文件加载到运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区类的数据结构 有两种类型的类加载器: 1.1JVM自带提供的三类加载器:根类加载器Boo ...
分类:
其他好文 时间:
2017-06-24 10:08:07
阅读次数:
191
jvm虚拟机在运行时需要用到的内存区域.广泛一点就是堆和栈,其实不然,堆和栈只是相对比较笼统的说法,真正区分有如下几个 先上图一: 总的就是 java的内存模型 内存模型又分堆内存(heap)和方法区(有时也称为non-heap)和栈 堆又分新生代(Young)和老年代(old/Tenured) 新 ...
分类:
编程语言 时间:
2017-06-23 23:54:04
阅读次数:
424
Class文件二进制字符流通过类加载器和虚拟机加载到内存(方法区)完成在内存上的布局和初始化后,虚拟机字节码执行引擎就可以执行相关代码实现程序所定义的功能。虚拟机执行引擎执行的对象是方法(均特指非本地方法),方法是 着一个程序所定义的一个功能的载体,实现预定的业务功能或者特定的功能等。 Java虚拟... ...
分类:
编程语言 时间:
2017-06-22 23:48:23
阅读次数:
295
读了《深入理解Java虚拟机》之后,当时理解了,过段时间又忘记了,在此做下记录,方便自我回顾,也希望能帮到想要学习虚拟机的同学。 Java虚拟机在执行java程序时会把它所管理的内存分为5个不同的数据区域(也可以细分为7个不同的区域,后续做介绍):程序计数器、Java虚拟机栈、本地方法栈、Java堆 ...
分类:
编程语言 时间:
2017-06-22 00:15:46
阅读次数:
184
一、GC主要针对什么区域 1. 程序计数器、虚拟机栈、本地方法栈,3个部分随线程而生死。每个栈桢分配多少内存基本上是在类结构确定下来时就已确定,大体上可认为是 编译期可知。 2. 而 堆 和 方法区 则不一定,如一个接口多个实现类需要内存不一样,一个方法多个分支需要分配内存也不一样;这些只有一实现运 ...
分类:
其他好文 时间:
2017-06-19 15:51:57
阅读次数:
237
一、什么是安全点: 在可达性分析算法中查找存活的对象,首先要找到哪些是GC Roots; 有两种查找GC Roots的方法: 一种是遍历方法区和栈区来查找(保守式GC); 一种是通过OopMap的数据结构来记录引用的位置(准确式GC),如在类加载过程中,JIT编译过程中,分别记录下 类成员 和 调用 ...
分类:
其他好文 时间:
2017-06-18 23:43:10
阅读次数:
771