`
BruceChan_GY
  • 浏览: 6977 次
社区版块
存档分类
最新评论
文章列表
数组的可见性,与 数组元素 的可见性,是否是一回事?   比如private volatile int[] data;   这里的volatile,是保证data字段的可见性,那对于data里的元素,比如data[18],是否也有volatile的语义呢?   看如下代码 package learn.concurrency.jcip; import java.util.concurrent.TimeUnit; public class VolatileArrayTest { private volatile int[] data; publ ...
synchronized的解析 synchronized是使用对象作为mutex的,按照之前的介绍,相关信息存储在mark字段中,具体参考前面的描述。 这里分析一种简单的场景,2个线程基于同一个对象进行同步,跟踪下具体的sys call。 源码如下: public class ...
java的对象构成 对于JVM来说,构造JAVA对象时,是以oops-klass二分模型来构建的,其中oops表示对象的相关信息。 基本结构如下: class oopDesc {   friend class VMStructs; private:   volatile markOop  _mark;   union _metadata {     wideKlassOop    _klass;     narrowOop       _compressed_klass;   } _metadata; 对于数组来说,其结构如下: class arrayOopDesc : public ...
上下文切换 线程执行时需要分配CPU资源,CPU按照时间片分给线程执行,在线程时间片用完的情况下,需要保存现场,将执行权转让给其他线程。当该线程重新有机会执行时,需要加载之前的现场信息,然后执行。 从保存现场 到下次加载执行, 就是一次上下文切换,英文叫: context switch 在linux中,可以通过vmstat来查看系统的context switch次数:    System        in: The number of interrupts per second, including the clock.        cs: The number of contex ...
第3章 Session的处理注意点: 如果session不再需要使用,需要立刻close CONNECTIONLOSS 客户端与zk service的连接断开,也就是TCP连接已经断开了。这时候如果进行原语操作,比如create等,就会出现CONNECTIONLOSS。 CONNECTIONLOSS的出现,会引起不确定的问题:即:之前的原语操作是否成功, 有如下3种情况: 1. 原语操作还没有发给服务端 2. 原语操作已经发给服务端,但是服务端还未执行 3. 原语操作已经发给服务端,服务端也执行了,但是客户端没有收到结果 因此应用在处理CONNECTIONLOSS时,需要容错这3 ...

ZK in action笔记一

 
第2章   简介   ZK提供了一些简单的操作原语,对于具体的案例实现,需要自己实现,比如分布式锁。这里的案例称为recipe   ZK的数据以tree来展示,每个节点成为znode   ZK提供的操作原语:   create /path data      Creates a znode named with /path and containing data delete /path      Deletes the znode /path exists /path      Checks whether /path exists setData ...

HSDIS对volatile的浅析

    博客分类:
  • JVM
HSDIS有什么用?用来看汇编,有用么? 答案是有用的。 举个最简单的例子,volatile,是java关键字,那在汇编层面是如何做的呢? 示例代码: import java.util.*; public class VolatileTest { public volatile long value = 0; public static void main(String[] args) { VolatileTest t = new VolatileTest(); t.value = 3; ...

HSDIS

    博客分类:
  • JVM
root@ubuntu:~/Downloads# ./jdk1.6.0_45/bin/java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+DebugNonSafepoints HelloWorld Hello OpenJDK -1 root@ubuntu:~/Downloads# ./jdk1.6.0_45/bin/java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+DebugNonSafepoints HelloWorld Hello Open ...

JVM模式

    博客分类:
  • JVM
[root@localhost ~]# java -server -version java version "1.7.0_75" OpenJDK Runtime Environment (rhel-2.5.4.2.el7_0-x86_64 u75-b13) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode) [root@localhost ~]# java -server -Xint -version java version "1.7.0_75" OpenJDK Runtime Environ ...
Global site tag (gtag.js) - Google Analytics