Linux源码阅读笔记06-RCU机制和内存优化屏障
RCU机制 RCU(Read-Copy-Update),是Linux内核重要的同步机制。Linux内核有原子操作,读写信号量,为什么要单独设计一个比较复杂的新机制呢? spinlock和mutex信号量都使用了原子操作,多CPU在访问共享变量的时候Cache一致性会变得非常糟糕,有时候会使得整个性能下降。 允许多个读者存在,但是读和写不能同时存在。 ...

Redis源码、面试指南(2)内存编码数据结构(下)
Redis源码、面试指南(2)内存编码数据结构(上):https://developer.aliyun.com/article/1508225 节点细节 由上文节点定义代码可知,压缩节点信息可以分为三个部分:previous_entry_length,encoding,content,如下图: ...

Redis源码、面试指南(2)内存编码数据结构(上)
内存编码数据结构的实现 这一部分主要介绍Redis特制的内存编码数据结构,建议结合图像来理解。 整数集合 源码:intset.h和intset.c。 整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素,并且这个集合的元素数量(见后)不多时,Redis就会使用整数集合作为集合键的底层实现。 结构定义 ...

ThreadLocal 源码解析get(),set(), remove()用不好容易内存泄漏
1.Java中内存泄漏 在 Java 中,内存泄漏是指程序在申请内存后,无法释放不再使用的内存空间。这意味着随着时间的推移,应用程序占用的内存会持续增长,最终可能导致OutOfMemoryError,使得应用程序崩溃。 内存泄漏通常发生在以下情况: 对象引用:当一个对象不再需要,但仍然被引用,导致垃圾收集器无法回收它。 静态变量:如果一个对象被静态变...

Nginx源码阅读:共享内存ngx_shm_t和它的组织方式ngx_shm_zone_t、ngx_list_t
一、Nginx中共享内存的结构图一个ngx_list_t来组织所有的ngx_shm_zone_t一个ngx_shm_zone_t来管理一块共享内存二、Nginx中实现共享内存的部分1、共享内存配置信息的结构体ngx_shm_t该结构体并非创建于共享内存空间中,而是通过内存池去创建这个结构体,通过这个结构体(共享内存的配置信息),调用ngx_shm_alloc传入共享内存的配置信息ngx_shm_....

Nginx源码阅读:ngx_palloc 内存池
一、内存池内存池主要是为了解决内存碎片的问题,如果有大量客户端连接,并且每次只占用一点内存,会出现很多的内存碎片。nginx中为了更好地管理内存,分为大块和小块(chunk),大块用于存储大的内存,小块用于存储比较小的内存。应用:nginx中一个tcp连接来了之后,处理该连接的所有数据,内存都由内存池来管理。二、大块nginx中大块的结构typedef struct ngx_pool_large....

【Redis深度专题】「核心技术提升」从源码角度探究Redis服务的内存使用、清理以及逐出等底层实现原理
背景介绍 Redis作为一种高性能的内存NoSQL数据库,其容量受限于最大内存的限制。用户在使用阿里云Redis时,除了对性能和稳定性有较高的要求外,对内存占用也非常敏感。然而,在实际使用中,一些用户可能会发现他们的线上实例的内存占用比预期的要大。 内存较高的场景 在使用Redis时,以下是一些可能导致内存占用较高的因素: 数据存储格式:Redis支持不同的数据结构,如字符串、哈...

读Flink源码谈设计:有效管理内存之道
版本 日期 备注 1.0 2021.12.20 文章首发 1.1 2021.12.22 错别字修正 1.2 2022.2.24 描述错误修正 0. 前言 在最初接触到Flink时,是来自于业界里一些头部玩家的分享——大家会用其来处理海量数据。在这种场景下,如何避免JVM ...

从源码深入详解ThreadLocal内存泄漏问题
1. 造成内存泄漏的原因?threadLocal是为了解决对象不能被多线程共享访问的问题,通过threadLocal.set方法将对象实例保存在每个线程自己所拥有的threadLocalMap中,这样每个线程使用自己的对象实例,彼此不会影响达到隔离的作用,从而就解决了对象在被共享访问带来线程安全问题。如果将同步机制和threadLocal做一个横向比较的话,同步机制就是通过控制线程访问共享对象的....

我惊了!!!ThreadLocal 源码存在内存泄露的 Bug!!!
一、前言写这篇文章的目的是因为现在网上很多关于 ThreadLocal 的文章,很大一部分都不太准确。比如说:ThreadLocal 内部有个 map,键为线程对象;ThreadLocal 的数据结构是个数组;还有说 ThreadLocal 存在内存泄露,但里面的 get、set 以及 remove 方法能防止 ThreadLocal 内存泄露问题。都是不准确的哈,太误导人了。这里老周先来点开胃....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。