JUC中Atomic class之lazySet的一点疑惑
最近再次翻netty和disrupt的源码, 发现一些地方使用AtomicXXX.lazySet()/unsafe.putOrderedXXX系列, 以前一直没有注意lazySet这个方法, 仔细研究一下发现很有意思。我们拿AtomicReferenceFieldUpdater的set()和lazySet()作比较, 其他AtomicXXX类和这个类似。
最近再次翻netty和disrupt的源码, 发现一些地方使用AtomicXXX.lazySet()/unsafe.putOrderedXXX系列, 以前一直没有注意lazySet这个方法, 仔细研究一下发现很有意思。我们拿AtomicReferenceFieldUpdater的set()和lazySet()作比较, 其他AtomicXXX类和这个类似。
大家好,并发编程网同GreenTeaJUG和Adopt openjdk官方达成合作,组织翻译Adopt OpenJDK的中文版,翻译完成后会从官网链接到中文版,有兴趣的同学可以通过评论领取任务进行翻译,请尽量在领取后2天内完成翻译,目前GreenTeaJUG已经组织了六名同学参与翻译。
原文链接 原文作者:Byron Kiourtzoglou 翻译:梅小西(904516706)
Java 8介绍了一些新语言以及运行时新特点。其中一个特点便是完全移除了持久代(PermGen),自从Oracle公司发布了JDK1.7后就已经宣布了这个决定。还有比如内部字符串,从JDK1.7开始就从持久代移除了,JDK8的发布彻底废除了它。在这个部分,我们会讨论持久代的继任者:Metaspace。
当执行一个Java程序并出现了“泄露”类元数据对象时我们会比较HotSpot 1.7和HotSpot 1.8的运行时行为的不同点。
一旦Java 8 正式发布,关于Metaspace的最终的参考规范,调优标记以及文档应该就能使用了。
原文链接 原文作者:Byron Kiourtzoglou 翻译:梅小西(904516706)
Oracle HotSpot JVM 内存
Java HotSpot 虚拟机堆空间
这个部分将向你介绍Oracle Java HotSpot虚拟机里不同的Java堆内存空间概览。理解这个对于任何一个涉及到线上经常出现的内存问题的解决非常重要。而具有合适的Java 虚拟机堆空间的知识是很关键的。
Java虚拟机是你Java程序的基础,它提供了动态内存管理服务,垃圾收集,线程,IO以及本地操作等等。
Java堆空间是运行时Java程序的内存“容器”,它为你的Java程序提供了它需要的(Java堆,本地堆)合适的内存空间,并由JVM自身管理。
JVM HotSpot内存被分为3个内存空间:
• The Java Heap(堆)
• The PermGen (持久代)
• 本地堆(C-堆)
作者:李强强
上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走进Java中的进制详解。
在Java世界里,99%的工作都是处理这高层。那么二进制,字节码这些会在哪里用到呢?
自问自答:在跨平台的时候,就凸显神功了。比如说文件读写,数据通信,还有Java编译后的字节码文件。下面会有个数据通信的例子哦。
Java对对象实现Serializablle接口,就可以将其转化为一系列字节,而在通信中,不必要关系数据如何在不同机器表示和字节的顺序。这里泥瓦匠对Serializablle接口,不做详细讲解,以后单独详解。
原文链接: 首发表于infoq.com 2015年6月
上一篇文章中通过引入的一个例子介绍了在Executor框架下,提交一个任务的过程,这个过程就像我们老大的老大要找个老大来执行一个任务那样简单。并通过剖析ExecutorService的一种经典实现ThreadPoolExecutor来分析接收任务的主要逻辑,发现ThreadPoolExecutor的工作思路和我们带项目的老大的工作思路完全一致。在本文中我们将继续后面的步骤,着重描述下任务执行的过程和任务执行结果获取的过程。会很容易发现,这个过程我们更加熟悉,因为正是每天我们工作的过程。除了ThreadPoolExecutor的内部类Worker外,对执行内容和执行结果封装的FutureTask的表现是这部分着重需要了解的。
为了连贯期间,内容的编号延续上篇。
原文地址 作者:Jakob Jenkov 译者:张坤
Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。 阅读全文
作者:李强强
上一篇 图解Http协议 ,这次继续Http家族中的Cookie。泥瓦匠最近看到博客园中一篇好文《超大cookie拒绝服务攻击》,这就是因为浏览器Cookie太大,导致请求时,请求头域过大造成发送失败。下面咱们就了解一下Cookie。按着以前的思路图文并茂哈,没图说个XX。
原文链接 归档下发表于infoq.com 2015年6月的两篇文章。
基于Executor接口中将任务提交和任务执行解耦的设计,ExecutorService和其各种功能强大的实现类提供了非常简便方式来提交任务并获取任务执行结果,封装了任务执行的全部过程。本文尝试通过对j.u.c.下该部分源码的解析以ThreadPoolExecutor为例来追踪任务提交、执行、获取执行结果的整个过程。为了避免陷入枯燥的源码解释,将该过程和过程中涉及的角色与我们工作中的场景和场景中涉及的角色进行映射,力图生动和深入浅出。