Is Terracotta’s BigMemory a big thing?
星期四, 九月 30th, 2010
Terracotta最近推出了个新东西–BigMemory,使得Infoq上的这篇Terracotta’s BigMemory Aiming to Eliminate Garbage Collection for Java Caches文章引来长长的争论。像GigaSpaces、Infinispan等和Terracotta有竞争关系的商业或开源的对手,对BigMemory的诸多方面提出了疑问和质疑。如果BigMemory真的如Terracotta吹的那般好,那些竞争对手该情何以堪?就算它真的好,也要挑出它的不是,比如就有评论说现在都分布式年代了,还搞什么单JVM实例优化?暂且放下这些争论,看看BigMemory是个怎样的东西,值得大家如此大动神经。
jvm关闭钩子与信号处理
星期五, 四月 30th, 2010
对于使用Java做server端程序来说,通常会希望在JVM关闭时做些扫尾工作,比如写内存数据到磁盘、关闭句柄等。JVM提供了关闭钩子(shutdown hooks)来做这件事情。关闭钩子使用起来很简单,调用Runtime实例的public void addShutdownHook(Thread hook)即可,其中参数hook就是要做扫尾工作的钩子线程。这就是说,调用这个方法,JVM便会在初始化时注册这个钩子,待时机到了触发钩子。而触发的时机有:1)程序正常推出或者调用System.exit方法,如果是多线程环境,要求是最后一个非守护线程触发,2)JVM收到需要关闭自己的信号(比如SIGINT、SIGTERM等,但像SIGKILL,JVM就没有机会去处理了),也或者发生如系统关闭这种不可阻挡的事件。