3.00002 postgresql如何初始化内存上下文,都初始化了哪些上下文?

PostgreSQL从7.1版本开始引入新的内存管理机制,通过内存上下文解决之前的内存泄漏问题。内存上下文在启动时进行初始化,包括TopMemoryContext、ErrorContext和PostmasterContext等,确保内存的有效管理和回收。MemoryContextInit、AllocSetContextCreate等函数用于创建和管理内存上下文。
摘要由CSDN通过智能技术生成

解决问题:PostgreSQL 7. 1 以前的版本在处理大量以指针传值的查询时一直存在着内存泄漏的问题,直到 查询结束才能将内存收回 。

从版本 7. 1 开始,系统实现了新的内存管理机制, 这样使得运行时大多数内存分配操作在各种语义的内存上下文( MemoryContext) 中进行 。 内存上 下文将放时将会释放在其中分配的所有内存,这样即使某些内存没有被任何指针指向或忘记了释 放,我们都可以通过释放内存上下文来避免这些内存泄漏 。 这一机制也使内存管理更加方便,开发 人员不必再费尽心思地处理内存军事放的工作。
程序首先调用 MemoryContextInit 创建 TopMemoryContext 和 ErrorContext0。然后调用AllocSetContextCreate以 TopMemoryContext为根节点创建 PostmasterContext. 最后将全局指针 CurrentMemoryCon­text 指向 PostmasterContext。 这些内存上下文的具体含义如下:
• TopMemoryContext: 在 TopMemoryContext 中分配的内存直到系统退出时才会释放。例如: TopMemoryContext 中存放了所有打开的文件描述符、内存上下文的控制节点等 。 它是所有内存上下文的树根 。
• ErrorContext: 这是错误恢复处理的永久性内存环境,恢复完毕则重设。
• PostmasterContext: 这是 Postmas

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四库全书的酷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值