jvm
文章平均质量分 78
L970524
学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java运行时的内存划分
Java 运行时的内存划分程序计数器记录当前线程所执行的字节码行号,用于获取下一条执行的字节码。当多线程运行时,每个线程切换后需要知道上一次所运行的状态、位置。由此也可以看出程序计数器是每个线程私有的。虚拟机栈虚拟机栈由一个一个的栈帧组成,栈帧是在每一个方法调用时产生的。每一个栈帧由局部变量区、操作数栈等组成。每创建一个栈帧压栈,当一个方法执行完毕之后则出栈。...原创 2018-08-06 21:28:17 · 253 阅读 · 0 评论 -
java类加载
一、java类加载机制 前几天在学习tomcat内核的时候,应用到了自定义加载类。其实这里是java的难点和重点。今天,我们就从java的类加载机制出发,从顶层到底层详细介绍类加载!1.1 类加载 几乎我看过的所有博客讲解这里是,都是以一段代码开始,这里我也就不例外了: 首先看下面的代码:public class Example { private stati原创 2017-11-05 14:40:49 · 538 阅读 · 0 评论 -
OOM(OutOfMemory)分析
OOM 分析Java 堆内存溢出在 Java 堆中只要不断的创建对象,并且 GC-Roots 到对象之间存在引用链,这样 JVM 就不会回收对象。只要将-Xms(最小堆),-Xmx(最大堆) 设置为一样禁止自动扩展堆内存。当使用一个 while(true) 循环来不断创建对象就会发生 OutOfMemory,还可以使用 -XX:+HeapDumpOutofMemoryErorr...原创 2018-08-07 00:35:55 · 413 阅读 · 0 评论 -
垃圾回收
垃圾回收 垃圾回收主要思考三件事情:哪种内存需要回收?什么时候回收?怎么回收?对象是否存活引用计数法这是一种非常简单易理解的回收算法。每当有一个地方引用一个对象的时候则在引用计数器上 +1,当失效的时候就 -1,无论什么时候计数器为 0 的时候则认为该对象死亡可以回收了。这种算法虽然简单高效,但是却无法解决循环引用的问题,因此 Java 虚拟机并没有采...原创 2018-08-07 01:14:57 · 393 阅读 · 0 评论 -
对象创建与内存分配
对象的创建与内存分配创建对象当 JVM 收到一个 new 指令时,会检查指令中的参数在常量池是否有这个符号的引用,还会检查该类是否已经被 加载过了,如果没有的话则要进行一次类加载。接着就是分配内存了,通常有两种方式:指针碰撞空闲列表使用指针碰撞的前提是堆内存是完全工整的,用过的内存和没用的内存各在一边每次分配的时候只需要将指针向空闲内存一方移动一段和内存大小相等区域即...原创 2018-08-07 09:21:03 · 351 阅读 · 0 评论 -
volatile关键字
volatile 关键字前言不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能。首先来看看为什么会出现这个关键字。内存可见性由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个线程都有着自己的工作内存(高速缓存)。线程在工作时,需要将主内存中的数据拷贝到工作内存中。这样对数据的任何操作都是基于工作内存(效率提高),并且不能直接操作...原创 2018-08-07 11:30:42 · 212 阅读 · 0 评论
分享