Java
E董
这个作者很懒,什么都没留下…
展开
-
oozie 4.2.0编译问题
编译oozie4.2.0遇到问题版本说明:jdk: 1.7maven: 3.0.3hadoop: 2.7.1hive: 2.0.0pig: 0.13在编译的时候遇到,报 ShimLoader.getHadoopShims().setTokenStr(ugi, delegationToken,// h原创 2016-04-14 15:27:33 · 576 阅读 · 0 评论 -
JAVA线程池
线程池详解ThreadPoolExecutorThreadPoolExecutor是最灵活的一个线程池,用户可以根据实际需要通过多个参数配置出合适的线程池。构造方法如下:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue原创 2017-01-13 16:29:42 · 4817 阅读 · 1 评论 -
热替换jar包导致JVM崩溃(crash)
情景在一次项目升级过程中,需要替换一个jar包,已经有进程用这个jar包启动运行了。操作当没有终止这些进程的情况下,热替换该jar包现象替换jar包之后,在运行的进程全部消失了,打印出jvm crash的日志。原因查找相关资料后发现是因为java读取jar包时,为了提高性能,默认使用了mmap,也就是文件到内存的映射,使用mmap是调用的本地原创 2017-03-17 18:10:12 · 4372 阅读 · 1 评论 -
cgroup资源隔离内存OOM事件监听(oom notifier)
CGROUP是目前比较流行也比较常用的资源隔离技术,包括docker,hadoop都是使用cgroup做的资源隔离。当对内存做资源隔离时,当进程OOM后,可以选择直接kill进程,也可以不kill,默认选项是oom之后直接kill。可以通过以下方式关闭该功能:echo 1 > memory.oom_control但是当进程oom将进程kill掉之后,很难捕捉到oom日志,针对这种情况,cgro原创 2017-06-18 20:52:23 · 3294 阅读 · 0 评论 -
基于DelayQueue带有回调的超时缓存实现
平时项目中总会用到超时缓存,并且希望超时之后会触发一些后续处理逻辑,比如心跳。一般做法就是把这些数据放到一个队列中,然后线程定时遍历检查是否超时。在查了一些资料后发现DelayQueue是非常合适而且非常简便的,于是基于DelayQueue实现一个超时缓存队列,支持多次检查并增加了一些超时回调方法。原创 2017-02-20 16:49:09 · 1508 阅读 · 0 评论