[redis]原理
[redis]原理
|
0 评论
一、线程模型我们都是知道redis是单线程的,那么对于耗时的操作需要慎重,否则会造成redis卡顿,比如说keys * ,其时间复杂度是O(N),那么对于单线程的redis,如何支持高并发的呢?主要是因为多路复用。执行过程如下:(1)客户端socket01请求连接redis的socket serve
[redis]常见应用场景
[redis]常见应用场景
|
0 评论
一、分布式锁如果多个进程(模块)需要对同一份数据进行修改,这个时候就需要用到分布式锁,保证多个进程串行操作,否则并行修改的数据将出现不可预测的问题。分布式锁的解决方案有很多,其中常用的一种就是利用redis来实现分布式锁,主要用到以下两种命令:(1)setnx(2)set key value px
[redis]基础数据结构
[redis]基础数据结构
|
0 评论
Redis: Remote Dictionary Service , 远程字典服务,Redis是一个键值数据库,其中Key都是字符串的形式,Value分别支持string、list、set、hash以及zset。一、string string是redis最常用的数据结构,通常系统缓存在redis的
JVM发生OOM的区域
JVM发生OOM的区域
|
0 评论
一、JVM发生OOM的区域public class HelloWorld { public static void main(String[] args) { sayHello(); } private static void sayHello() {
频繁发生Full GC的几种常见原因
频繁发生Full GC的几种常见原因
|
0 评论
1、 系统并发量比较大,频繁发生Young GC,但是每次发生Young GC之后存活对象比较多,而Survivor内存配置不合理,放不下Young GC的存活对象,导致Young GC之后存活对象直接存放在老年代,从而导致老年代内存不足触发Full GC。解决方式:通过jstat观察GC情况,合理
JVM参数配置模板
JVM参数配置模板
|
0 评论
一、采用CMS(4核8G)-Xms4096M # 初始堆大小-Xmx4096M # 堆最大值-Xmn3072M # 堆年轻代大小-Xss1M # 设置线程栈大小-XX:Metaspa
JVM工具-jmap
JVM工具-jmap
|
0 评论
一、概况通过jmap可以查看JVM堆内存情况以及导出堆快照,用得比较的方式是导出堆快照,然后用其他工具进行分析,比如通过JVisualvm进行分析。通过jmap -help 可以查看用法:需要注意的时,执行jmap时,查看对应的pid,当前用户需要与启动对应pid的用户一直,否则可能会出现如下错误:
JVM工具-jstat
JVM工具-jstat
|
0 评论
一、概要jstat用于统计JVM信息。主要用法是:jstat -statOptions vmid,其中-statOptions可选参数如下:class #显示有关类加载器行为的统计信息。compiler #显示有关Java HotSpot VM即时编译器行为的统计信息。gc #显示有关垃圾回
Young GC日志解析
Young GC日志解析
|
0 评论
一、一段程序代码public class MinorGCTest { public static void main(String[] args) { // 1MB byte[] array1 = new byte[1024 * 1024]; arra
JVM垃圾收集器
JVM垃圾收集器
|
0 评论
一、JVM堆内存结构堆内存主要分为两个区域,分别是新生代和老年代,其中新生代又划分了Eden区和Survivor区,用复制算法对该区域进行垃圾回收;老年代由于存活对象占比大,不适合采用复制算法,采用的是标记整理算法进行垃圾回收。二、垃圾回收器概览对于新生代和老年代有不同的垃圾收集器,其中新生代的垃圾