
JVM
文章平均质量分 55
清风徐来F&F
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM -- 01Java平台简述
前言:一次面试引发的“血案” 前不久面试,面试官开门见山,来了一句:“说说你对Java平台的看法或者理解?” 我:瞬间懵逼!。。。我还想说Java他老人家对我有没有看法呢!言归真正,这次面试给我很好的提了个醒。做开发两年确实菜鸟一枚,很多基础的东西自己一直抱着得过且过的心态,是应该静下心好好梳理夯实一下基础的东西了。那么就先从JVM开始弄起!~~~1.浅谈Java平台Java组成: ...原创 2018-07-03 22:18:30 · 415 阅读 · 0 评论 -
JVM--16 【垃圾回收算法】标记-清除算法
标记-清除算法 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行进行改进而得到的。不足之处 效率问题:标记和清除两个过程的效率都不高 空间问题:标志清除之后会产生大量的不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对...原创 2018-09-22 21:44:48 · 541 阅读 · 1 评论 -
JVM--15 【垃圾回收机制】如何判断对象是垃圾对象
上一篇博文,我们讲了判断对象是垃圾对象的方法之一:引用计数算法,这里我们继续看第二种方法:可达性分析算法。一、可达性分析算法 可达性分析算法:基本思路就是通过一系列成为“GC Roots”的对象作为起点,从这些节点开始向下搜索,搜索所走过的路径称为“引用链”(Reference Chain)。当一个对象到GC Roots没有任何引用链相连...原创 2018-09-22 13:45:15 · 453 阅读 · 0 评论 -
JVM--14 【垃圾回收机制】 如何判断对象是垃圾对象
一、对象已经死了吗? 在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是确定这些对象之中哪些是“存活”着,哪些已经“死去”(即不可能再被任何途径使用的对象)判断对象是否存活的算法:引用计数法、可达性分析算法。这里分两篇博文介绍一下这两种算法,本篇先介绍一下:引用计数算法二、引用计数算法 引用计数...原创 2018-09-22 12:21:51 · 679 阅读 · 0 评论 -
JVM--13 垃圾回收概述
摘抄自小涛涛~~~:小涛涛JVM系列博客 众所周知,java语言不需要像c++那样需要自己申请内存,自己释放内存,这些都是JVM帮我们做好了的,但是对于一名java程序员,想要更近自己的水平更上一层楼,就要去了解GC的工作原理,根据原理才能写出更好的更优的程序。 &...转载 2018-09-22 08:36:13 · 348 阅读 · 0 评论 -
JVM--12 对象的访问定位
摘抄自小涛涛~~~:小涛涛JVM系列博客 之前我们理解java栈堆时可能会说栈中存储指针,指向堆中的对象地址。其实这种说法是不严谨的,其一是java中没有指针的概念,其二是栈中不一定存储对象的地址,也可能是其他地址。那么问题来了,对象是如何进行访问定位的呢。 &nbs...转载 2018-09-20 22:52:37 · 222 阅读 · 0 评论 -
JVM--18 【垃圾回收算法】标记-整理算法和分代收集算法
前言: 复制收集算法在对象存活率较高时就要进行大量的复制操作,效率将会变低。更关键的是,如果不想浪费50%的空间,就需要额外的空间进行分配担保,以应对被使用的内存中所有对象都100%存活的极端情况,所以在老年代一般不能直接选用复制算法。 标记-整理算法 根据老年代的特点,有人提出了另外一种“标记-整理”算法,其实这里的标记-整理就是在标记-...原创 2018-09-24 23:43:22 · 459 阅读 · 0 评论 -
JVM--17 【垃圾回收算法】复制算法
前言:上一篇博文,我们介绍了标记-清除算法,其中关于此算法的两个不足之处:效率问题和空间问题 做了特别说明。本篇介绍复制算法就是在标记-清除算法的基础上进行改进。特别是标记-清除算法可能造成内存空间不连续问题进行改进。 复制算法 在介绍复制算法之前,我们细化一下JVM内存结构。在此之前我们将内存结构分为线程共享区域(方法区、堆)和线程独享区(...原创 2018-09-24 13:23:59 · 782 阅读 · 0 评论 -
JVM--11探究对象结构
摘抄自小涛涛~~~:小涛涛JVM系列博客 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。下图是普通对象实例与数组对象实例的数据结构:对象头HotSpot虚拟机的...转载 2018-09-18 23:58:29 · 223 阅读 · 0 评论 -
JVM--10 对象的创建
摘抄自小涛涛~~~:小涛涛JVM系列博客 下图是JAVA虚拟机对象的创建过程:现在我们就以下几点说明对象的创建:1、给对象分配内存给对象分配内存有指针碰撞和空闲列表两种方式。具体描述如下图所示。按时2、线程安全性问题 无论是指针碰撞还是空闲列表,在高并发情况下都有可能存在线程安全...转载 2018-09-18 00:13:11 · 283 阅读 · 0 评论 -
JVM--09 运行时常量池和直接内存
摘抄自小涛涛~~~:小涛涛JVM系列博客 1、运行时常量池 运行时常量池(Runtime Constant Pool),它是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述等信息外,还有一项信息是常量池(Constant Pool Table),用于存放编译...转载 2018-09-18 00:10:37 · 447 阅读 · 0 评论 -
JVM--05 Java内存区域介绍
摘抄自小涛涛~~~:小涛涛JVM系列博客 JAVA虚拟机内存模型如下图所示: 上图我们可以看到JAVA虚拟机内存模型分为两大块:线程共享区和线程独占区域。 线程共享区:方法区和堆是分配给进程的,也就是所有线程共享的。...转载 2018-09-03 22:55:43 · 221 阅读 · 0 评论 -
JVM--08 JVM方法区
摘抄自小涛涛~~~:小涛涛JVM系列博客 1、JAVA虚拟机方法区 JAVA虚拟机方法区在JAVA虚拟机内存模型中位置如下图所示。 方法区和堆一样,是各个线程共享的内存区域,用于存储已被虚拟机加载转载 2018-09-12 00:25:45 · 457 阅读 · 0 评论 -
JVM--07 Java虚拟机栈
摘抄自小涛涛~~~:小涛涛JVM系列博客 1、JAVA虚拟机栈概述 JAVA虚拟机栈在JAVA虚拟机内存模型中位置如下图所示。 JAVA虚拟机栈是描述JAVA方法执行的动态内存模型。从上图可以看出转载 2018-09-05 00:29:28 · 366 阅读 · 0 评论 -
JVM--06 程序计数器
摘抄自小涛涛~~~:小涛涛JVM系列博客 程序计数器具有如下特点:如果线程正在执行的是Java 方法,则这个计数器记录的是正在执行的虚拟机字节码指令地址如果正在执行的是Native 方法,则这个技术器值为空(Undefined)此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域 ...转载 2018-09-05 00:26:04 · 221 阅读 · 0 评论 -
JVM--04 Java虚拟机发展
摘抄自小涛涛~~~:小涛涛JVM系列博客 下面,我们对上述JAVA虚拟机产品进行逐一介绍:1、Sun Classic VM 世界上第一款商用虚拟机,只能使用纯转载 2018-08-30 23:16:17 · 245 阅读 · 0 评论 -
JVM--03 Java发展史
摘抄自小涛涛~~~:小涛涛JVM系列博客 一、JDK Version 1.0 开发代号为Oak(橡树),于1996-01-23发行 其提出了“Write Once,Run Anywhere”的口号二、JDK Version 1.1于1997-02-19发行。引入的新特性包括:引入JDBC(Java D...转载 2018-08-30 22:38:27 · 219 阅读 · 0 评论 -
JVM--02 模拟内存溢出 内存监控方法
摘抄自小涛涛~~~:小涛涛JVM系列博客一 模拟内存溢出: 1 代码如下: 2 IDEA配置JVM参数 配置内容:-XX:+HeapDumpOnOutOfMemoryError -Xms20m -Xmx20m 其中-XX:+HeapDumpOnOutOfMemoryError指的是在堆溢出时保存快照 其中-Xms20m -Xmx20m是设置JVM最大和最小堆内存都为20m。配置这里是因为...原创 2018-07-03 23:36:59 · 841 阅读 · 0 评论