(四) netty内存池:技术概要

1 netty内存池概述

内存管理,按使用的范围,分为操作系统的内存管理和用户应用自己的内存管理。操作系统的内存管理是指,进程在需要时向操作系统申请分配一定量的内存资源,并在使用结束后释放和回收内存资源。常见的操作系统内存管理算法有:slab、buddy、jemalloc等经典算法。

而有些应用为了更有效地使用内存,自己借鉴操作系统的内存管理算法,实现了自己进程内的内存管理,比如netty(这里是指使用了netty的JVM进程)。基本做法是,先向操作系统申请一块较大的内存,然后自己再按使用需求在这块内存上进行分配和释放。

netty引入内存池技术,就是为了更有效地使用内存,概括起来主要包括以下几个目的:
1、更快速地分配和释放内存。因为netty是直接内存的重度用户,而直接内存的分配和回收,都涉及到系统调用,这是很慢的。如果将申请到的内存缓存起来,下次使用时直接从内存池分配,就快多了。

2、减少内存碎片。netty几乎完全借鉴了jemalloc内存分配算法,对内存外碎片和内碎片都有很好的控制。

3、使用合理的数据结构来记录内存块的分配状态(比如哪些已分配、哪些未分配以及未分配的内存在哪里),使得这些元数据消耗的内存尽量少。

4、使得应用所占用的内存页尽量少,避免发生过多的page fault,从而导致频繁换页,降低性能。

5、netty对内存使用量进行了跟踪监控,能更好地了解内存的使用情况。同时提供了内存泄露监控的机制。

2 netty内存池内存分配算法概述

netty内存池的内存分配技术,完全借鉴了jemalloc算法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值