我这里有一个小程序,我将1,000,000个字符转储到QPlainTextEdit中。当我在Linux中查看SystemMonitor来查看内存时,看到的内存为90.8 M!文字只能在1M左右。为什么QPlainTextEdit使用那么多的内存?
我正在使用PySide 1.2.4和QtCore版本4.6.2。
import sys
from PySide.QtGui import *
from PySide.QtCore import *
class MainWindow(QPlainTextEdit):
def __init__(self):
super(MainWindow, self).__init__()
self.show()
self.lines = ''
for i in range(100000):
self.insertPlainText('0123456789\n')
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWin = MainWindow()
ret = app.exec_()
sys.exit( ret )
因为您的程序使用的内存不仅仅是文本。您可以运行此代码,然后检查您的内存:
import sys
from PySide2 import QtWidgets
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
w.show()
ret = app.exec_()
在我的机器上,大约需要30MB的内存。这只是一个空的小部件,什么也不做。如果我运行您的代码,它甚至比您还要大110MB!
您必须知道,QWidget带有很多看不见的元数据,但它们始终存在。