2015年7月8日

memcached(十三)注意事项

摘要: 一些使用上遇到过的问题。mc key限制。 长度限制250;不能有空格,中文。mc超时时间设置。过大,会表现为set进去成功, 但get不出来。如果mc有打印verbose级日志的话会显示超时: NOT FOUND 111 FOUND KEY 111 -nuked by expire原因是:Ex... 阅读全文

posted @ 2015-07-08 19:54 Emmerich.Luang 阅读(351) 评论(0) 推荐(0) 编辑

memcached(十二)监控

摘要: 1、可以使用MemAdmin(PHP环境)。2、telnet/nc到mc中, 然后stats命令(stats slabs/stats items)。3、使用源码上附送的工具(memcached-tool)https://github.com/memcached/memcached/tree/mast... 阅读全文

posted @ 2015-07-08 19:53 Emmerich.Luang 阅读(147) 评论(0) 推荐(0) 编辑

memcached(十)动态扩容

摘要: HASH的扩容 一般来说,hash容器都会在初始化的时候创建一块空间用于存放对象,对象的数量到达临界值后扩容整个空间。而不是一边增加/删除对象一边分配空间。本人根据是否阻塞,区分为静态扩容和动态扩容。静态扩容 参考java.util.HashMap的实现。在put方法中, public V... 阅读全文

posted @ 2015-07-08 19:52 Emmerich.Luang 阅读(714) 评论(0) 推荐(0) 编辑

memcached(九)--LRU

摘要: memcached通过LRU算法(least recently usage)把过期的对象淘汰掉。 简单点说,每个slab自己就是一个双向链表。热数据在链头,冷数据在链尾。创建对象的时候,把这个对象放到链头。当创建对象时分配内存不足,则把链尾的冷数据淘汰掉。同一个对象更新会把对象的时间属性更新。... 阅读全文

posted @ 2015-07-08 19:50 Emmerich.Luang 阅读(540) 评论(0) 推荐(0) 编辑

memcached(八)-- set指令内部实现

摘要: 在一个set指令传输到memcached后:set abc 0 3600 5hello memcached是怎么样执行set/add等对象的咧? 首先从memcached启动后,要先监听端口,监听到有对应的动作后,执行指令。从源码中,堆栈是这样子:main_base从启动到监听main——>... 阅读全文

posted @ 2015-07-08 19:48 Emmerich.Luang 阅读(505) 评论(0) 推荐(0) 编辑

JVM系列(三)垃圾回收

摘要: 什么对象需要被回收?? 没有被引用的对象要被回收。怎么判定对象已经没有被引用???1、引用计数算法。(因为循环引用问题,java没有使用这种方法)2、可达性分析法。(主流实现。判定对象是否被引用。从GC ROOTS节点找引用链。)gc roots是?Class- class loaded by s... 阅读全文

posted @ 2015-07-08 19:36 Emmerich.Luang 阅读(195) 评论(0) 推荐(0) 编辑

JVM系列(二)各区域的OOM

摘要: stack的内存溢出demo,无限递归:public class StackOOM { private static void fun(){ fun(); } /** * VM arg -Xss128K * @param args ... 阅读全文

posted @ 2015-07-08 14:23 Emmerich.Luang 阅读(609) 评论(0) 推荐(0) 编辑

导航