达梦8 内存泄漏泄漏原因分析之一

在实际使用过程中经常发现DMSERVER进程在OS中的内存占用使用远远超过实际情况。原因有很多,下面列出其中一种:

测试库版本

复制代码
SQL> select id_code;

LINEID     ID_CODE
---------- -----------------------------------
1          --03134283938-20221019-172201-20018

测试步骤如下:

复制代码
#查看dmserver在OS上的内存占用
SQL> host ps aux | grep dmserver | grep -v grep
dmdba    20398 16.8 24.0 3518472 1938328 pts/2 Sl+  11:21   0:58 dmserver path=dm.ini

#向测试表插入数据,模拟排序操作
SQL> insert into d select * from a order by 2;
affect rows 80000000
used time: 00:01:12.785. Execute id is 602.

#查看dmserver在OS上的内存占用
SQL> host ps aux | grep dmserver | grep -v grep
dmdba    20398 24.7 42.8 5289780 3457352 pts/2 Sl+  11:21   1:48 dmserver path=dm.ini

#退出会话
SQL> exit

#查看dmserver在OS上的内存占用,又回到了测试前
[dmdba@node1 ~]$ ps aux | grep dmserver | grep -v grep
dmdba    20398 24.6 23.8 3518520 1927272 pts/2 Sl+  11:21   1:51 dmserver path=dm.ini

以上插入SQL执行的过程中查询V$MEM_POOL视图,DATA_SIZE字段的值不断增长,SQL语句执行完毕后,DATA_SIZE增加的部分消灭。但从上图中可见,但只有会话退出后在OS上的显示才回到测试前。分析原因如下:

用lsof命令搜索上述会话的thrd_id,显示打开了许多文件。会话退出后相关资源才完全释放。

相关推荐
indexsunny5 分钟前
互联网大厂Java面试实战:核心技术与微服务架构解析
java·数据库·spring boot·缓存·微服务·面试·消息队列
合方圆~小文7 分钟前
三目智能监控新标杆
数据库·人工智能·模块测试
神秘的猪头9 分钟前
AI全栈项目 Day 3:不仅是数据库,更是你的“数据堡垒” —— PostgreSQL 硬核入门
数据库·sql·postgresql
天人合一peng13 分钟前
kingbase数据库的
服务器·数据库·oracle
雨季66615 分钟前
系统化方法论与实战案例
数据库
数据库知识分享者小北20 分钟前
从极速复制“死了么”APP,看AI编程时代的技术选型
数据库·阿里云·状态模式·ai编程·supabase
想摆烂的不会研究的研究生25 分钟前
并发场景——接口幂等性设计
数据库·redis·后端·缓存
星火开发设计39 分钟前
关系代数:数据库查询的数学基石与实战解析
数据库·学习·oracle·知识·关系代数
u01040583641 分钟前
企业微信第三方应用API对接的Java后端架构设计:解耦与可扩展性实践
java·数据库·企业微信
ascarl201042 分钟前
Oracle 12c 官方卸载工具 (Deinstall Tool) 标准流程
数据库·oracle