文件:zmoalloc.h zmoalloc.c 1.求两个整数的余数 eg: 求_n对sizeof(long)的余数(_n&(sizeof(long)-1)), 性能提升为50%-100% 左右.…
在jvm中,实现了多种垃圾收集器,包括:串行垃圾收集器.并行垃圾收集器.CMS(并发)垃圾收集器.G1垃圾收集器,接下来,我们一个个的了解学习. 串行垃圾收集器 串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作, 并且java应用中的所有线程都要暂停,等待垃圾回收的完成.这种现象称之为STW(Stop-The-World). 对于交互性较强的应用而言,这种垃圾收集器是不能够接受的. 一般在Javaweb应用中是不会采用该收集器的. 编写测试代码 package com.…
2. 垃圾收集器与内存分配策略 垃圾收集(Garbage Collection, GC)是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如Scala等)程序员在提升开发效率上获得了惊人的便利.理解GC,对于理解JVM和Java语言有着非常重要的作用.并且当我们需要排查各种内存溢出.内存泄漏问题时,当垃圾收集称为系统达到更高并发量的瓶颈时,只有深入理解GC和内存分配,才能对这些"自动化"的技术实施必要的监控和调节. GC主要需…
线程本地cache 线程本地cache对应的是类 ThreadCache,每一个thread一个实例,初始化代码在static函数CreateCacheIfNecessary中, 在该线程第一次申请内存的时候初始化,调用堆栈是 : 1 tcmalloc::ThreadCache::CreateCacheIfNecessary() 2 tcmalloc::ThreadCache::GetCache() 3 do_malloc_no_errno(unsigned int size) 4 do_mal…
内存管理优化 Redis Hash是value内部为一个HashMap,如果该Map的成员数比较少,则会采用类似一维线性的紧凑格式来存储该Map, 即省去了大量指针的内存开销,这个参数控制对应在redis.conf配置文件中下面2项: hash-max-zipmap-entries 64 hash-max-zipmap-value 512 当value这个Map内部不超过多少个成员时会采用线性紧凑格式存储,默认是64,即value内部有64个以下的成员就是使用线性紧凑存储,超过该值自动转成真正的…
安装  1准备编译环境    yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel  2 下载源码包(由于google不能上所以选择从本地上传)  wget 172.60.0.172:8080/libunwind-1.1.tar.gz  wget 172.60.0.172:8080/gperftools-2.1.tar.gz  wget 172.60.0.172:8080/redis-2.8.10.tar.gz…
转载地址:http://blog.sina.com.cn/s/blog_4be888450100z2ze.html 内存管理优化 Redis Hash是value内部为一个HashMap,如果该Map的成员数比较少,则会采用类似一维线性的紧凑格式来存储该Map, 即省去了大量指针的内存开销,这个参数控制对应在redis.conf配置文件中下面2项: hash-max-zipmap-entries 64 hash-max-zipmap-value 512 当value这个Map内部不超过多少个成员…
优化的一些建议 1.尽量使用短的key 当然在精简的同时,不要完了key的"见名知意".对于value有些也可精简,比如性别使用0.1. 2.避免使用keys * keys *, 这个命令是阻塞的,即操作执行期间,其它任何命令在你的实例中都无法执行.当redis中key数据量小时到无所谓,数据量大就很糟糕了.所以我们应该避免去使用这个命令.可以去使用SCAN,来代替. 3.在存到Redis之前先把你的数据压缩下 redis为每种数据类型都提供了两种内部编码方式,在不同的情况下redis…
一. redis使用上的优化 精简键名和键值 键名:尽量精简,但是也不能单纯为了节约空间而使用不易理解的键名. 键值:对于键值的数量固定的话可以使用0和1这样的数字来表示,(例如:male/female.right/wrong) 当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能 内部编码优化 redis为每种数据类型都提供了两种内部编码方式,在不同的情况下redis会自动调整合适的编码方式.(如图所示) SLOWLOG [get/reset/len]命令 : 该命令会打印出查…
1. redis.conf 配置參数: #是否作为守护进程执行 daemonize yes #如以后台进程执行,则需指定一个pid,默觉得/var/run/redis.pid pidfile redis.pid #绑定主机IP,默认值为127.0.0.1 #bind 127.0.0.1 #Redis默认监听port port 6379 #client闲置多少秒后,断开连接,默觉得300(秒) timeout 300 #日志记录等级,有4个可选值,debug,verbose(默认值),notice…