时间:2024-11-21 00:00:51
QT程序占用内存过高
1. 问题:最近正在测试写的QT应用程序,QT程序运行在S3C2440板子上的linux系统中,测试的过程中发现一个奇怪的问题,QT程序占用内存一次比一次大。比如第一次开机QT应用程序运行内存为30M,在运行一段时间后增加到33M,此时我将板子断电。第二次上电重启,怪事发生了,此时运行内存达到了34M,运行一段时间后达到37M。依次类推,最后QT程序因为占用内存过大被linux系统直接杀掉了,后面直接就起不来了。这个问题我百思不得其解,按理即使有内存泄露,断电重启它应该也会复原啊,为何内存却一次比一次大呢?2. 原因:经过多天的查找终于找到了故障点,原来是因为我程序中使用了SQLite数据库导致的。具体的原因是,我在QT程序中使用SQLite数据库存取历史数据,存取的历史数据是由下位机传上来的,每5秒存一次,这样每天存取的数据量达到17280条,量比较大。而导致内存一次比一次大的根本原因就在于我获取数据库最后一条记录的操作方式,由于我使用文件号的形式存取数据,所以每次仪器开机时都要去查看数据库中最后一条历史记录的文件号,然后以此文件号为基础向数据库中添加历史记录(文件号唯一代表每条历史记录,不能重复)。