python内存泄漏
‘壹’ python的内存问题该这么解决
1.没有开gc,或者gc设为debug状态,导致交叉引用没有被回收调
2.如果一个数据在逻辑上不应该存在,但是因为代码上没有做相关清除操作,导致他还存在,也是一种泄漏
举个栗子,例如我要记录最近50天的某个基金的日化收益率,定义一个全局的字典global_dict,运行了一个脚本进行计算,没10分钟算一次,但是我没有进行clear操作,每次的计算只是单纯的赋值dict[date] = rate,按理来说dict["五十天前"]的收益率都是不需要的,就是一种泄漏。
3.这种情况出现在python3.4之前,因为3.4已经修复了,是这样的,如果一个类定义了__del__,并且该类存在循环引用的情况,这时候gc就会把这个类放在gc.garbage当中,不会去做回收,可以说是跳出了分代回收的机制,但是3.4之后的版本就没有这种情况,会把他回收调。
‘贰’ python跑了一个小时正常吗
python跑了一个小时不正常。python跑时间超过半小时会发生内存泄漏的情况,是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。我的程序正好有大量的循环,因此也给不断累积的内存泄漏提供了条件。

python特点
python是一种计算机程序设计语言,python是用来编写应用程序的高级编程语言。完成同一个任务,python的代码量很少,但是代码少的代价是运行速度慢。python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作内置电池。用python开发,许多功能不必从零编写,直接使用现成的即可。
‘叁’ Java,Python之类的有智能指针的语言,如何处理由交叉引用造成的内存泄漏
正常设计通常不会有交叉引用的问题。 别被这些东西困扰了。
比如上面设计中,引用对象,通常是因为这些对象是父类,或者是功能类,所以当前类被删除的时候并不会被删除,但是父类和功能类通常都在系统初始化时初始化,系统退出时才被删除。
所以正常的设计情况下不存在这个问题。 内存泄漏往往是在使用别人的类,又不太搞清楚它的位置以及使用方法的情况下造成的。
