JVM
IFollowRivers
now is everything!
展开
-
JAVA虚拟机体系结构
转自 http://www.cnblogs.com/java-my-life/archive/2012/08/01/2615221.htmlJAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,转载 2017-05-22 16:44:19 · 253 阅读 · 0 评论 -
Volatile关键字
Volatile关键字的两个语义:1. 当一个变量定义为volatile之后,它将具备两种特性,第一是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。而普通变量不能做到这一点,普通变量的值在线程间传递均需要通过主内存来完成,例如,线程A修改一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A回写完成了之后原创 2017-06-21 20:09:17 · 470 阅读 · 0 评论 -
深入理解Java虚拟机(读书笔记)——运行时数据区域重点
1. 程序计数器程序计数器(Program CounterRegister)是一块较小的内存,它可以看做是当前线程所执行的行号指示器。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码的指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这类内存原创 2017-05-22 10:14:40 · 407 阅读 · 0 评论 -
JVM垃圾收集算法
垃圾收集算法:1. 标记-清除算法过程:包括“标记”和“清除”两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。缺点:效率问题,两个阶段效率都不高;空间问题,会产生大量不连续的内存碎片,可能导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。2. 复制算法(适合新生代)过程:将原创 2017-06-14 10:08:41 · 305 阅读 · 0 评论 -
JVM垃圾回收机制
GC需要完成3件事情:1.哪些内存需要回收?2.什么时候回收?3.如何回收?既然GC已经帮我们完成了上述事情,那为什么还要了解GC和内存分配呢?A.需要排查各种内存溢出B.排除内存泄漏C.当垃圾收集成为系统达到更高并发量的瓶颈时。当出现以上三种情况时,我们就需要对GC技术实施必要的监控和调节。GC回收的内存是哪部分内存?垃圾收集器所关注的是Jav...原创 2017-06-14 09:51:37 · 396 阅读 · 0 评论 -
虚拟机类加载机制
参考资料:《深入理解Java虚拟机》 《深入分析Java Web技术内幕》本文中我们将来回答以下5个问题:What(什么是虚拟机的类加载机制)When(什么时候开始加载)Who(谁来加载,这部分内容涉及到后面讲的3种类加载器)How(如何加载,涉及到双亲委派模型的工作过程)Why(为什么采用这种加载机制)1. 什么原创 2017-08-20 12:18:04 · 315 阅读 · 0 评论 -
7种垃圾收集器
补充总结:Serial收集器:优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。ParNew收集器:ParNew收集器其实就是Serial收集器的多线程版本,使用多线程进行垃圾收集。优点:ParNew收集器在单CPU的环境中绝对不会有比Serial收集器更好的效果,原创 2017-06-14 12:01:47 · 573 阅读 · 0 评论