Archive for ‘ June, 2015

Adopt Open JDK官方文档(四)基于虚拟机的编译环境

译文地址 译者:bobwenx@gmail.com

4.基于虚拟机的编译环境


  • 准备工作
  • 编译你自己的虚拟机
  • 编译你自己的轻量级虚拟机
  • 在Host 与 Guest VM 之间共享文件
  • 适用于 OpenJDK 8 的Vagrant Puppet 环境

Read more

Adopt Open JDK官方文档(八)OpenJDK 项目介绍

原文地址 译者:bobwenx  (bobwenx@gmail.com)

8.OpenJDK 项目介绍


对于其他项目,请参见OpenJDK http://mail.openjdk.java.net/mailman/listinfo 以及对应项目的Mailing Lists.

Read more

阿里内贸团队敏捷实践-敏捷回顾

原文地址 作者: 春平

回顾(review)是敏捷开发中的一个必不可少的实践,也是把整个敏捷开发过程连接成一个闭环的关键节点,本文将阐述我们是如何做敏捷回顾的。

敏捷回顾最高指导原则

ž无论我们发现了什么,考虑到当时的已知情况、个人的技术水平和能力、可用的资源,以及手上的状况,我们理解并坚信:每个人对自己的工作都已全力以赴。
敏捷回顾的目标
ž发现问题,持续改进。

Read more

设计模式简单总结

20140118133026285

 

Read more

JUC中Atomic class之lazySet的一点疑惑

最近再次翻netty和disrupt的源码, 发现一些地方使用AtomicXXX.lazySet()/unsafe.putOrderedXXX系列, 以前一直没有注意lazySet这个方法, 仔细研究一下发现很有意思。我们拿AtomicReferenceFieldUpdater的set()和lazySet()作比较, 其他AtomicXXX类和这个类似。

Read more

Adopt OpenJDK 翻译计划

大家好,并发编程网同GreenTeaJUG和Adopt openjdk官方达成合作,组织翻译Adopt OpenJDK的中文版,翻译完成后会从官网链接到中文版,有兴趣的同学可以通过评论领取任务进行翻译,请尽量在领取后2天内完成翻译,目前GreenTeaJUG已经组织了六名同学参与翻译。

Read more

《JVM故障诊断指南》之4 —— Java 8:从持久代到metaspace

原文链接 原文作者:Byron Kiourtzoglou 翻译:梅小西(904516706)

Java 8介绍了一些新语言以及运行时新特点。其中一个特点便是完全移除了持久代(PermGen),自从Oracle公司发布了JDK1.7后就已经宣布了这个决定。还有比如内部字符串,从JDK1.7开始就从持久代移除了,JDK8的发布彻底废除了它。在这个部分,我们会讨论持久代的继任者:Metaspace。

当执行一个Java程序并出现了“泄露”类元数据对象时我们会比较HotSpot 1.7和HotSpot 1.8的运行时行为的不同点。

一旦Java 8 正式发布,关于Metaspace的最终的参考规范,调优标记以及文档应该就能使用了。

Read more

《JVM故障诊断指南》之3 —— Java 线程: JVM持有内存的分析

原文链接 原文作者:Byron Kiourtzoglou 翻译:梅小西(904516706)

前面我们已经讨论过JVM里不同的堆空间,这节我们会给你提供教程,是关于如何从你的活动的应用Java线程中确定它持有多少堆空间,以及在哪里占用。这里有个来自Oracle Weblogic 10.0生产环境的真实案例,它能使你更好的理解分析过程。

我们也会演示这种情况,过多的垃圾收集或者堆空间内存占用问题并不总是由于真实的内存泄露引起,也可能是由于线程执行模型问题和太多的短生命对象引起。

Read more

《JVM故障诊断指南》之2 —— 调整合适的Java堆大小的技巧

原文链接 原文作者:Byron Kiourtzoglou 翻译:梅小西(904516706)

在生产系统上决定合适的Java堆大小不是一个容易的操作。许多性能问题的发生都是由于不恰当的Java堆容量的错误调整。这部分将从介绍一些技巧作为开头,它能帮助你在当前的或者新的生产系统上决定最佳的Java堆大小。其中一些技巧对预防OutOfMemoryError问题和内存泄露方面也同样有用。

请注意这些技巧是倾向于“帮助你”决定合适的Java堆大小。因为每一个IT环境都不相同,实际上你是处于最好的时机来精确决定你客户环境所需要的Java堆参数。

Read more

《JVM故障诊断指南》之1 —— JVM概览与介绍

原文链接 原文作者: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-堆)

Read more

JAVA面试题100问第一部分

原文地址 译者:Borg

译者注:由于原文太长,这只是大概三分一的部分,即翻译至第五页倒数第三个问题。

以下是面试时常问到的JAVA面试题,能让你对JAVA面试有基本的了解。根据我个人的经验,一个好的面试官在面试的时候是不会事先准备一列问题清单,一般来说都从关于JAVA最基本的概念开始,然后再根据你的回答继续深入讨论。

Read more

Java I/O : Java中的进制详解

作者:李强强

上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走进Java中的进制详解。

一、引子

在Java世界里,99%的工作都是处理这高层。那么二进制,字节码这些会在哪里用到呢?

自问自答:在跨平台的时候,就凸显神功了。比如说文件读写数据通信,还有Java编译后的字节码文件。下面会有个数据通信的例子哦。

Java对对象实现Serializablle接口,就可以将其转化为一系列字节,而在通信中,不必要关系数据如何在不同机器表示和字节的顺序。这里泥瓦匠对Serializablle接口,不做详细讲解,以后单独详解。

Read more

[译]深入 NGINX: 为性能和扩展所做之设计

原文链接:Inside NGINX: How We Designed for Performance & Scale 翻译:丁一

NGINX在web性能上的表现尤为出众,这完全得益于其设计方式,许多web和应用服务器都是基于线程或进程这种简单的架构,NGINX用了一种精妙的事件驱动架构,在现代的硬件上,它可以处理成千上万的并发连接。

Inside NGINX中的信息图对高级别的进程架构和NGINX如何在单个进程中处理多个连接进行了深入探讨。本文更进一步地阐述了NGINX的所有工作原理。

Read more

戏(细)说Executor框架线程池任务执行全过程(下)

原文链接:   首发表于infoq.com 2015年6月

上一篇文章中通过引入的一个例子介绍了在Executor框架下,提交一个任务的过程,这个过程就像我们老大的老大要找个老大来执行一个任务那样简单。并通过剖析ExecutorService的一种经典实现ThreadPoolExecutor来分析接收任务的主要逻辑,发现ThreadPoolExecutor的工作思路和我们带项目的老大的工作思路完全一致。在本文中我们将继续后面的步骤,着重描述下任务执行的过程和任务执行结果获取的过程。会很容易发现,这个过程我们更加熟悉,因为正是每天我们工作的过程。除了ThreadPoolExecutor的内部类Worker外,对执行内容和执行结果封装的FutureTask的表现是这部分着重需要了解的。

为了连贯期间,内容的编号延续上篇。

Read more

Java内存模型

原文地址  作者:Jakob Jenkov 译者:张坤

Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。 Read more

return top