monitor
什么是monitor?我们可以把它理解为一个同步工具,也可以描述为一种同步机制,它通常被描述为一个对象。 与一切皆对象一样,所有的java对象是天生的Monitor,每一个Java对象都有成为Monitor的潜质,因为在Java的设计中 ,每一个Java对象自打娘胎里出来就带了一把看不见的锁,它叫做内部锁或者Monitor锁。
Monitor 是线程私有的数据结构,每一个线程都有一个可用monitor record列表,同时还有一个全局的可用列表。每一个被锁住的对象都会和一个monitor关联(对象头的Markword中的LockWord指向monitor的起始地址),同时monitor中有一个Owner字段存放拥有该锁的线程的唯一标识,表示该锁被这个线程占用。其结构如下:
Owner:初始时为NULL表示当前没有任何线程拥有该monitor record,当线程成功拥有该锁后保存线程唯一标识,当锁被释放时又设置为NULL;
EntryQ:关联一个系统互斥锁(semaphore),阻塞所有试图锁住monitor record失败的线程。
RcThis:表示blocked或waiting在该monitor record上的所有线程的个数。
Nest:用来实现重入锁的计数。
HashCode:保存从对象头拷贝过来的HashCode值(可能还包含GC age)。
Candidate:用来避免不必要的阻塞或等待线程唤醒,因为每一次只有一个线程能够成功拥有锁,如果每次前一个释放锁的线程唤醒所有正在阻塞或等待的线程,会引起不必要的上下文切换(从阻塞到就绪然后因为竞争锁失败又被阻塞)从而导致性能严重下降。Candidate只有两种可能的值0表示没有需要唤醒的线程1表示要唤醒一个继任线程来竞争锁。
参考:
http://cmsblogs.com/?p=2071
相关阅读
常用串口监控软件:Accessport,ComMonitor,Device Moni
Accessport 下载网址:http://www.sudt.com/en/ap/download.htm优点:完全免费操作简单可查看波特率等串口配置信息缺点:不能监控已打
先用一张图来说明dubbo中的monitor模块结构: 基于Filter来实现服务调用监控功能 @Activate(group = {Constants.PROVIDER, Const
下载链接:http://pan.baidu.com/s/1jImlFFK 提取密码:sigy解压密码:shawn写在前面:这个东西是我在网上看了些教程以及源代码,如果您觉
开机故障 开机提示Hardware Monitor...的原因和解决方
电脑开机显示hardware monitor 开机故障,主要显示一些电脑主板温度、CPU温度、CPU电压、内存电压……等,出现这种开机
HostMonitor 简介1、Host Monitor是KS-SOFT公司出品的一套安装在Windows上的网络监测工具,据官方网站的介绍,Host Monitor提供了56