Tropo vs Twilio

At year 2009 I start using Tropo to build a voice channel of a Expert System, the system was designed with a complex rule engine, the interaction is asked to be do in a asynchronous way - the backend rule engine is able to interrupt the running call session with event. This make us having to choose Tropo, which support the asynchronous event. Of course, this product is using Java.

Continue reading Tropo vs Twilio

InfoQ 文章 Hunting Java Concurrency Bugs

http://www.infoq.com/articles/Hunting-Concurrency-Bugs-1

 

这篇文章很值得一读。

 

主要讨论了openJDK(注意文中没有说明Oracle JDK也有相同问题)自身存在的问题,以及分析问题的艰辛过程。

 

第一个问题是1.7.0_40 之前存在的多线程下造成livelock,jstack无响应。

 

第二个问题是HashMap的OOM,多线程下操作引起循环指针在序列化的情况下出现OOM。

 

这个问题出现后还好有个10G 的heapdump,文件太大不能工具直接分析,直接看文件分析可能是循环指针序列化造成的,尝试使用ObjectInputStream读出,但是由于其本机没有生产环境所有的类(造业),此路不通,最后通过unix的strings工具获得反序列化的字符串,得知是个hashmap。

他们在本机尝试多线程操作hashmap引起崩溃,重现了问题。最后将hashmap改为java.util.concurrent.ConcurrentHashMap解决问题。

 

评论中提到JCStress

http://www.oschina.net/translate/concurrency-torture-testing-your-code-within-the-java-memory-model

Continue reading InfoQ 文章 Hunting Java Concurrency Bugs

OpenJDK 和Oracle JDK 的区别

这篇 http://blog.sina.com.cn/s/blog_5cfd3adf0101a9db.html 文章讲了一些,但是不完全正确。

 

参考https://blogs.oracle.com/henrik/entry/moving_to_openjdk_as_the 这里

Oracle 基于 OpenJDK 代码创建 Reference Implementation (RI)

 

Oracle  创建RI 是基于BCL协议而openJDK是GPLv2

具体Oracle的商业限制 要看http://www.oracle.com/technetwork/java/javase/terms/products/index.html

BCL 在这里 http://www.oracle.com/technetwork/java/javase/terms/license/index.html

 

哎妈太麻烦,现在linux系统上默认装的都是OpenJDK

但是据说OpenJDK问题有点小多。

 

一般的使用Oracle JDK并不违反什么商业限制:

就我所知的JMX 用第三方查看器查看javax.management包下的或是自己开发的MBean是没有违反限制的 jvisualvm是第三方工具 jconsole是免费的;

 

但是Java Flight Recorder 和 Java Mission Control 却是要收费的,晕。

 

 

 

 

参见:

https://blogs.oracle.com/henrik/entry/moving_to_openjdk_as_the

http://blog.sina.com.cn/s/blog_5cfd3adf0101a9db.html

Continue reading OpenJDK 和Oracle JDK 的区别

JVM Heap最大内存限制

好久没写日志了……

 

最近的项目陷入了hazelcast的巨坑之中,问题之一就是hazelcast的各种内存泄露,让我绞尽脑汁,最后大家商量没得办法,只好说服让客户每月重启一次,这样他们还不至于拿锤子锤你,然后加大JVM内存。

 

先得确认一下jvm的内存限制:

http://stackoverflow.com/questions/2093679/max-memory-for-64bit-java

http://stackoverflow.com/questions/1434779/maximum-java-heap-size-of-a-32-bit-jvm-on-a-64-bit-os

 

32bit OS 1.2G就有些够呛

64bit OS + 64bit JVM 理论上是2的64次方,人家试过1000G是没得问题的。

Continue reading JVM Heap最大内存限制

Pagination


Total views.

© 2013 - 2017. All rights reserved.

Powered by Hydejack v6.6.1