DELPHI 动态数组 释放内存空间

发布于 2021-11-08 15:37:29 字数 501 浏览 918 评论 5

程序运行时,通过SQLServer JDBC Driver连接数据库,将程序运行时需要的数据通过一个动态数组保存在内存中,大小约为150KB。

问题描述:因为程序一启动,所需要的数据就已经保存在内存中。当要用到这些数据时,程序是直接在内存中查找,而不到数据库中重新查找,只有向数据库中插入数据时,才会连接数据库进行插入操作。这样就造成了一个问题:比如,我之前使用的参数(程序启动时加载到动态数组中了)是1.21,现在我修改这个数据成1.20,在数据库中这个数据现在变成了1.20,而我的程序还在运行,没有再次连接数据库,这样的话,动态数组中的参数还是1.21,而我的程序进行运算时还是使用的1.21,导致与实际结果不符。

我采取过的操作:在每次需要使用参数时,都重新连接数据库加载参数数据。因为不会释放动态数组在内存中占用的空间,导致程序在运行了3000次以上之后,机器死机。

程序的使用环境:工业使用,需要与串口进行通讯,获取数据。24小时运行,平均每天运行次数在200次左右。运行环境的话,就是XP系统,内存512M以上,别的没有要求。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

陌若浮生 2021-11-11 01:25:44

动态数组分配用setLength(arr, N)//N>0

动态数组释放也用setLength(arr, 0)

心舞飞扬 2021-11-11 01:22:30

数据保存在服务器上,客户端先在服务器读数据,然后再保存在自己的内存中。服务器中数据更新之后,客户端这边需要使用数据时,还是在自己内存中读。 至于如何让数据库中的数据更新之后,立马让客户端的数据也跟着更新,这也是解决我目前这个问题的方式之一。 我是想不到什么办法啊! 在网上看到可以用指针清空动态数组的方法,但是暂时还无法用到我的程序中...指针太头疼了。

一个人的旅程 2021-11-10 23:18:08

没有用过DELPHI,,友情帮顶一下····

不过你的这个是不是设计上有问题啊?!既然你可以从数组中取数据,那么说明你需要并可以命中内存中的数据,那能不能设计成改数据库的时候,同时修改内存值,相当于同步一次。至于内存回收,因为不知道DELPHI的回收机制,不过个人觉得,会不会是你代码的原因,一个如此成熟的语言应该不至于吧,不过指针的问题超麻烦的说……

各自安好 2021-11-10 17:18:22

客户端一共只有15个左右,有2种连接方式:1是直接连到服务器往数据库中插入数据;2是连接我们公司的服务端,然后我们的服务端再向数据库中插入数据。 这个程序我接手时,前同事已经将它写完整了。我现在只是维护一下,完全没有任何注释的代码真头疼...

叹沉浮 2021-11-10 16:18:44

 自己顶一下自己...

  看样子DELPHI已经过时了啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文