jemalloc源码解析-核心架构-睿初科技软件开发技术博客



jemalloc源码解析-核心架构-睿初科技软件开发技术博客

jemalloc是一种通用的内存管理方法, 着重于减少内存碎片和支持可伸缩的并发性。jemalloc首次在FreeBSD中引入,后续增加了heap profiling, Valgrind integration, and extensive monitoring/tuning hooks等功能,目前在多个大型项目中都有应用。 近期我们项目中也引入了jemalloc, 下面记录一下我对jemalloc的理解。

jemalloc的设计目标:

  • 快速分配/释放内存,最小化内存使用
  • 在最小化内存的前提下,尽可能保证内存分配的连续性, 减少内存碎片
  • 好的线程扩展性
  • 支持堆性能分析

在实现malloc的时候,其设计者参考了一些已被验证的好的设计思想:

  • 划分不同size大小的小对象, 减少内存碎片
  • 合理选择size class的数量,基于内部碎片和外部碎片的折中考虑
  • 严格限制分配器元数据的开销(低于2%,不包括碎片)
  • 最小化活跃页面集合(减少内存交换)
  • 最小化锁竞争(arena and thread cache)
  • 如果不通用,说明不够好(If it isn't general purpose, it isn't good enough)


Read full article from jemalloc源码解析-核心架构-睿初科技软件开发技术博客


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts