JVM
缘聚则合缘灭则散
这个作者很懒,什么都没留下…
展开
-
JVM垃圾收集器
JVM中垃圾的回收由垃圾收集器进行,随着JDK的不断升级,垃圾收集器也开发出了各种版本,垃圾收集器不断优化的动力,就是为了实现更短的停顿。下面是7种不同的收集器,如果两个收集器之间有连线,则表示它们之间可以搭配使用;所处的区域表示属于新生代还是老年代收集器。一.Serial 收集器 (新生代) 串行收集器最基本、历史最悠久(JDK1.3.1之前),这是一个单线程的收集器,当该收集器运行时必...转载 2019-01-23 21:35:21 · 232 阅读 · 0 评论 -
类加载机制
一、类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)。链接又分为三个步骤,如下图所示:二、加载加载时类加载过程的第一个阶段,在加载阶段,虚拟机需要完成以下三件事情:1、找到class文件的位置,通过一个类...转载 2019-01-13 22:48:37 · 102 阅读 · 0 评论 -
Class文件结构
引言众所周知,Java语言有一个很重要的特点是平台无关性,即用Java语言编写的程序可以在不同平台之间无缝迁移,Java对这个特性有一个著名的宣传口号:“一次编写,到处运行(Write Once,Run AnyWhere)”。Java能够实现平台无关性的原因是它在平台之上提供了一个Java运行环境,也就是JVM,Sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机...转载 2019-01-10 00:38:57 · 238 阅读 · 0 评论 -
类加载器
一、类加载器详解类加载器是负责将可能是网络上、也可能是磁盘上的class文件加载到内存中(方法区), 并为其生成对应的java.lang.class对象。java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制.JVM中用来完成上述功能的具体实现就是类加载器.类加载器...转载 2019-01-15 23:35:50 · 123 阅读 · 0 评论 -
JVM垃圾回收机制
一、概述说起垃圾回收(GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,早在1960年Lisp这门语言中就使用了内存动态分配和垃圾回收技术。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释放垃圾占用的空间,这一切都交给了JVM来处理。这时候有人就会疑惑了,既然GC已经为我们解决了这个矛盾,我们还需要学习GC么?答案是...转载 2019-01-21 22:24:18 · 213 阅读 · 0 评论 -
JVM运行时数据区
JVM内存区域的划分和C/C++开发不同,在从事JAVA的开发过程中,我们对内存区域的关注相对较轻,但是了解和掌握JAVA的内存结构会帮助我们做出合理的优化决策。首先,先大体的了解一下JAVA虚拟机运行时的内存结构:从线程的角度来看,总体分为私有和共享的两部分。共享的数据区为方法区,堆,本地库接口,以及每个JVM虚拟机中的JVM执行引擎,而线程私有的数据区则为虚拟机栈,本地方法栈,程序计数...转载 2019-01-16 21:20:01 · 189 阅读 · 0 评论 -
GC日志分析、JVM内存分配和回收策略
概述Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。关于回收内存这一点,由虚拟机中的垃圾收集器完成,本文主要介绍给对象分配内存的那点事儿。对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB...转载 2019-01-28 22:42:28 · 395 阅读 · 0 评论