Java PermGen 去哪里了?

原文链接:原文作者:Monica Beckwith  以下为本人翻译,仅用于交流学习,版权归原作者和InfoQ所有,转载注明出处,请不要用于商业用途

在Java虚拟机(JVM)内部,class文件中包括类的版本、字段、方法、接口等描述信息,还有运行时常量池,用于存放编译器生成的各种字面量和符号引用。

在过去(自定义类加载器还不是很常见的时候),类大多是”static”的,很少被卸载或收集,因此被称为“永久的(Permanent)”。同时,由于类class是JVM实现的一部分,并不是由应用创建的,所以又被认为是“非堆(non-heap)”内存。

阅读全文

JDateTime

译者:阿邱 原文链接

JDateTime 是一个优雅的,开发者友好的类并且也一种非常精巧的跟踪日期和时间的一种方式。它使用一种非常清晰并且被广泛证明的算法去进行时间的操作。每个被JDK中Calendar深深虐过的人都将发现这是多麽好的一剂良药。

阅读全文

深入浅出ClassLoader

Dedicate to Molly.

你真的了解ClassLoader吗?

这篇文章翻译自zeroturnaround.com的 Do You Really Get Classloaders? ,融入和补充了笔者的一些实践、经验和样例。本文的例子比原文更加具有实际意义,文字内容也更充沛一些,非常感谢作者 Jevgeni Kabanov 能够共享如此优秀的文档。

阅读全文

【Velocity官方指南】使用单例模式还是非单例模式

译者:大胃  原文链接

从Velocity 1.2以后的版本,开发者对于Velocity引擎的使用有了两种方式,单例模型(Singleton)以及多个独立实例模型。Velocity的核心部分也采用了这两种模型,目的是为了让Velocity可以更容易与你的JAVA应用相集成。

阅读全文

为何从10开始到99连续相乘会得到0?

原文链接  译者: 李璟(jlee381344197@gmail.com)

这是一块非常简单的Java代码片段:

[code lang=”java”]
public class HelloWorld{

public static void main(String []args){

int product = 1;

for (int i = 10; i <= 99; i++) {

product *= i;

}

System.out.println(product);

}

}
[/code]

为什么得出的结果是0呢?

阅读全文

通过JVM日志来进行安全点分析

原文链接 作者: Plumbr 译者:之诸暇

许多事件都可能会导致JVM暂停所有的应用线程。这类暂停又被称为”stop-the-world”(STW)暂停。触发STW暂停最常见的原因就是垃圾回收了(github中的一个例子),但不同的JIT活动(例子),偏向锁擦除(例子),特定的JVMTI操作,以及许多场景也可能会导致应用程序暂停。

阅读全文

Velocity官方指南-容器

原文网址  译者:曾道涛

简介
“容器”这一概念对于Velocity来说很重要,它是在系统的各部分之间传递一系列数据的通用技术。也就是说,容器是Java层(或者程序员)和模板层(或者设计师)之间的数据搬运工。作为程序员,你会收集各种类型的对象,包括所有你程序需要的,然后把它们放在容器里。对于设计师来说,这些对象,以及它们的方法和属性,可以通过被称为引用的模板元素来访问。一般来说,你会和设计师一起决定应用程序的数据需求。从某种意义上说,一旦你为设计师生成了一个数据集,也即在模板中提供了“API”访问。因此,在这个阶段的开发过程中,你值得花时间仔细分析。

阅读全文

并行编程中的内存回收Hazard Pointer

感谢同事【kevinlynx】在本站发表此文

接上篇使用RCU技术实现读写线程无锁,在没有GC机制的语言中,要实现Lock free的算法,就免不了要自己处理内存回收的问题。

Hazard Pointer是另一种处理这个问题的算法,而且相比起来不但简单,功能也很强大。锁无关的数据结构与Hazard指针中讲得很好,Wikipedia Hazard pointer也描述得比较清楚,所以我这里就不讲那么细了。

一个简单的实现可以参考我的github haz_ptr.c
阅读全文

无锁有序链表的实现

感谢同事【kevinlynx】在本站发表此文

无锁有序链表可以保证元素的唯一性,使其可用于哈希表的桶,甚至直接作为一个效率不那么高的map。普通链表的无锁实现相对简单点,因为插入元素可以在表头插,而有序链表的插入则是任意位置。

本文主要基于论文High Performance Dynamic Lock-Free Hash Tables实现。
阅读全文

JAVA的内存模型及结构

原文链接   译文链接  作者:Tai Truong    译者:Jaxon

所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?

Java内存模型

Java内存模型在JVM specification, Java SE 7 Edition, and mainly in the chapters “2.5 Runtime Data Areas” and “2.6 Frames”中有详细的说明。对象和类的数据存储在3个不同的内存区域:堆(heap space)、方法区(method area)、本地区(native area)。 阅读全文

Velocity官方指南-简介

原文网址

简介

Velocity是基于Java开发的模板引擎,一款简单而强大的开发工具,可以方便的按照格式创建、渲染文档和显示数据。在本指南中,我们希望能够对使用Velocity开发的基本知识做一个概述。

阅读全文

Velocity官方指南-Velocity是如何工作的

原文网址  译者:方腾飞

基本模式

当你在一个应用程序或者一个servlet里,或者在其他任何一个地方使用Velocity时,通常按照如下方式处理:

  1. 初始化Velocity。Velocity可以使用两种模式,作为“单独的运行时实例”的单例模式(在下面的内容会介绍),你仅仅只需要初始化一次。
  2. 创建一个Context对象(后面会介绍这是什么)。
  3. 把你的数据对象添加到Context(上下文)。
  4. 选择一个模板。
  5. ‘合并’ 模板和你的数据输出。

阅读全文

Apache Velocity官方指南-12.模板编码及国际化

原文链接 作者:Apache官方 译者:雷志远 校对:方腾飞

Velocity允许你指定模板的字符集编码,并且非常简单。常用的resource API已经支持把编码作为入参。代码如下:
阅读全文

《Apache Velocity开发者指南》

欢迎各位光临并发编程网,并发网最近几年一直致力于翻译优秀的技术文章,从未间断,并发网从本月开始计划组织翻译各个技术框架的官方指南,本月组织翻译Apache Velocity官方指南。Velocity是在阿里巴巴和支付宝等公司被广泛使用的一种基于Java的模板引擎,有兴趣翻译的同学请在评论中回复翻译章节和完成时间,翻译完之后提交到并发编程网,网站使用指南请参考:如何投稿

阅读全文

Guava官方文档-RateLimiter类

原文链接 作者:Dimitris Andreou  译者:魏嘉鹏 校对:方腾飞token_bucket

RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。

校对注:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateLimiter设置1000的速率后,就会每秒往桶里扔1000个令牌。

[code lang=”java”]
com.google.common.util.concurrent.RateLimiter

@ThreadSafe
@Betapublic
abstract class RateLimiter extends Object
[/code]

阅读全文

return top