2015年8月18日

JVM系列(七)jdk工具介绍、监控等

摘要: 安装java的时候一般会安装JDK而不是JRE。其中一个原因就是JDK/bin目录下附送很多的工具,有助于定位java相关问题。visualVM 非常好的工具!可以看到分代内存的使用情况、线程的CPU使用率、类的内存使用情况。基本上做性能测试必须这个软件的。另外,安装visual gc插件后可... 阅读全文

posted @ 2015-08-18 20:44 Emmerich.Luang 阅读(211) 评论(0) 推荐(0) 编辑

2015年8月17日

JVM系列(五)并发相关

摘要: 并发概率下的内存模型 java定义了一个内存模型,从硬件/操作系统中抽象出来。对比C/C++直接用操作系统的内存是不同的。 工作内存(working memory):线程自己独占的内存。线程的工作内存是主内存的一份拷贝。 主内存(main memory):实际上存放所有线程的数据的地方。工作内... 阅读全文

posted @ 2015-08-17 20:02 Emmerich.Luang 阅读(500) 评论(0) 推荐(0) 编辑

2015年8月7日

String的hashCode 和equals 区别

摘要: 网上找到特么一段话:Java对于equals方法和hashCode方法是这样规定的: 1、如果两个对象相等,那么它们的hashCode值一定要相等; 2、如果两个对象的hashCode相等,它们并不一定相等。PS:相等说的是equals方法。 那么这2个方法是什么来的?? 先祭出源码... 阅读全文

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

2015年7月31日

JVM系列(四)生命周期和classloader

摘要: 大体上,class的生命周期是这样子的:加载相关内容classLoader是什么?通过一个类的全限定名,获取这个类的二进制字节码。区分两种classLoader:1、bootStrap,C++实现,是虚拟机的一部分;2、其他,java实现,虚拟机外部,继承自java.lang.ClassLoad... 阅读全文

posted @ 2015-07-31 20:14 Emmerich.Luang 阅读(520) 评论(0) 推荐(0) 编辑

2015年7月27日

jvm面试题解答

摘要: 网上找到的一些jvm面试题,现整理并且把答案搞出来。JVM内存模型?如图所示:写一段代码实现堆溢出(heap 对象太大)?栈溢出(死循环,死递归)?常量池溢出(intern)?方法区溢出?链接说明:http://www.cnblogs.com/ELMND/p/4630070.html类的生命周期... 阅读全文

posted @ 2015-07-27 18:02 Emmerich.Luang 阅读(1197) 评论(0) 推荐(1) 编辑

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 阅读(716) 评论(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) 编辑

导航