
JAVA虚拟机
jane_fast
梦很大的梦想家
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对于JAVA虚拟机运行时数据区的理解
1.程序计数器:这个是被线程独占的一块内存区域,主要是在字节码解释器中执行吓一条指令的地址,特别是在多线程的情况下,由于是采用时间片轮换的机制实现线程切换(特特别是在单核处理下),需要保留现场,,当cpu处理完其他请求,会根据程序计数器继续执行。 2.JAVA虚拟机栈:这个也是被线程独占的一块内存区域,主要存储局部变量表,操作数栈,动态链接,方法出口等信息,,局部变量表存放了编译期可知的各种基本原创 2017-03-08 01:40:00 · 312 阅读 · 0 评论 -
JVM中如何判断对象是否死亡
有两种方法: 1.引用计数器算法: 给对象添加一个引用计数器,每当有一个地方引用它时,引用计数器加一,当引用失效时,计数器值减一;任何时刻对象的引用计数器为0的对象就是不可能再被使用的; 2.可达性算法分析: GC Roots 不可达的对象即为不可能再被引用的对象,即使这个对象可能还与其他对象有联系 两种算法区别: 怎么说呢,引用计数器算法针对相互引用的对象是不会发现的,,也就是他们的原创 2017-03-08 21:20:11 · 1665 阅读 · 0 评论 -
JAVA虚拟机之创建对象
实际开发中我们创建一个对象一般是通过New关键字来创建的~那么在虚拟机中是如何创建对象的呢?当遇到一条new指令后,会检查这个指令的参数在常量池中是否对应一个类的符号引用,并检查这个引用是否被虚拟机加载,解析和初始化过,若没有,先执行这个类的类加载过程。 在类加载完成后,将为这个对象进行初始化工作,就是在堆中为此类开辟一块内存空间,如何开辟呢? 指针碰撞:如果堆是整齐划分的,用过的放在一边原创 2017-03-09 01:40:14 · 310 阅读 · 0 评论 -
CAS操作
转载自:http://www.blogjava.NET/xylz/archive/2010/07/04/325206.html 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁)。 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2转载 2017-03-24 16:09:48 · 379 阅读 · 0 评论