04/05/2023 10:17:46 AM - ERROR - 正常消息提示: Stone_主函数调用。日志信息:D:/mykmeans/yc_arrange_nd_M/MySaleArrangeM(pycharm入口).py内存(M):113.92578125,总:16167.3046875空闲:9304.81640625
04/05/2023 10:17:47 AM - ERROR - 正常消息提示: Stone_L0。内存(M):113.9296875,总:16167.3046875空闲:9306.32421875
.....
04/05/2023 10:25:59 AM - ERROR - 正常消息提示: Stone_EndToDB。内存(M):149.1015625,总:16167.3046875空闲:8421.71875
04/05/2023 10:26:00 AM - ERROR - ERROR:系统错误——日志信息:函数"L1"出错:函数"L1M"出错:ORA-06550: line 1, column 7:
从日志中两个数字:前面是python占用的内存,后面是系统空闲内存,从这个日志文档分析看:全程python占用内存不超过150M,但是,系统空闲内存下降却有1G左右,说明程序运行除了python占用内存之外,还有其他配套用内存的。
程序运行结束之后,那个python占用150M,能够自动释放,但是少掉的1G空闲内存没有回复
第二次运行,空闲内存继续减少,python占用的内存差不多还是150M左右
04/05/2023 10:26:41 AM - ERROR - 正常消息提示: Stone_主函数调用。日志信息:D:/mykmeans/yc_arrange_nd_M/MySaleArrangeM(pycharm入口).py内存(M):113.24609375空闲:8411.87890625CPU:21
04/05/2023 10:26:44 AM - ERROR - 正常消息提示: Stone_L0。内存(M):113.3125空闲:8396.453125CPU:7
.....
04/05/2023 10:39:10 AM - ERROR - 正常消息提示: Stone_EndToDB。内存(M):148.25空闲:7461.4375CPU:5
系统只有写这个日志文件,其他的都是操作数据库
发代码看一下,或者使用Python的内存管理模块memory_profiler
有一种可能是不是python在和数据库的查询中,有些错误异常没有处理,导致多次错误操作,资源开销较大,比如中间表,数据连接堆积等
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据您提供的日志信息,可以看出程序运行时占用的内存并不是很大,但系统空闲内存却下降了很多。这可能是因为程序在运行过程中会使用系统缓存和其他系统资源,导致系统空闲内存减少。
有些操作系统会在内存紧张时自动将一些不常用的数据或程序写入磁盘页交换文件(pagefile.sys或swapfile),以释放内存。这种情况下,即使程序已经释放了占用的内存,系统空闲内存也不会立即回复,因为操作系统需要从磁盘中读取数据或程序到内存中,这需要时间。
另外,您提到程序会操作数据库,如果数据库占用了较大的内存,也可能导致系统空闲内存下降较多。
为了解决这个问题,您可以尝试以下方法:
1. 调整程序的代码,尽可能地减少内存的占用,例如使用生成器、迭代器等方法,避免在程序中创建大量的临时对象。
2. 关闭不必要的系统服务和应用程序,释放更多的系统资源,增加系统空闲内存。
3. 增加系统内存,这可以有效地提高系统的运行效率和稳定性。
4. 避免在程序运行过程中频繁地进行磁盘读写操作,这会导致系统的磁盘页交换文件变得非常大,从而影响系统的性能。
5. 调整操作系统的虚拟内存设置,可以将虚拟内存设置为与物理内存相同的大小,或根据实际情况进行适当的调整。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
从日志中可以看出,程序占用的内存主要是Python占用的,但是系统的空闲内存下降非常多,说明可能存在内存泄漏的情况。
内存泄漏的原因可以有很多种,下面给出一些可能的原因和解决方案:
对象没有被正确的释放:可能存在某些对象没有被正确释放,导致内存泄漏。解决方案是在对象不再使用时及时删除或者设置为None,让垃圾回收机制可以回收这些对象。
缓存对象过多:可能存在某些需要缓存的对象过多,导致内存占用过高。解决方案是尽量避免使用过多的缓存,或者定期清理缓存。
数据库连接等资源没有正确释放:可能存在一些资源没有正确释放,比如数据库连接、文件句柄等,导致内存泄漏。解决方案是在使用完毕后及时关闭这些资源,避免资源占用过高。
具体的代码问题需要看实际的代码实现,可以尝试使用一些内存分析工具,如memory_profiler,PySizer等,来检测内存泄漏的情况,从而有针对性的解决这个问题。
如果我的回答解决了您的问题,请采纳!
以下内容部分参考ChatGPT模型:
这个问题可能是由于程序在运行过程中创建了很多对象,但是这些对象在使用之后并没有被垃圾回收器回收,导致内存占用越来越高。可以尝试使用Python的gc
模块手动触发垃圾回收机制,以释放不需要的内存。另外,也可以考虑使用内存分析工具,如memory_profiler
等,来分析程序在运行过程中的内存使用情况,以便更好地定位问题并进行优化。以下是一些例子:
import gc
# 在适当的时候手动触发垃圾回收机制
gc.collect()
memory_profiler
进行内存分析from memory_profiler import profile
@profile
def my_function():
# 这里是需要进行内存分析的代码
pass
my_function()
以上两种方法都可以用来帮助解决内存问题。但是,需要注意的是,过于频繁地手动触发垃圾回收机制可能会影响程序的性能,并且内存分析工具也会带来一些额外的性能开销。因此,在使用这些工具时,需要谨慎处理。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快