В PixelArray, похоже, есть ошибка.
Следующий код повторяет утечку памяти, устанавливая каждый цикл по одному пикселю, и вам даже не нужно обновлять дисплей, чтобы вызвать проблему:
import pygame, sys
from pygame.locals import *
ScreenWidth, ScreenHeight = 640, 480
pygame.init()
Display = pygame.display.set_mode((ScreenWidth,ScreenHeight), 0, 32)
pygame.display.set_caption('Memory Leak Test')
while True:
PixelArray = pygame.PixelArray(Display)
PixelArray[ScreenWidth-1][ScreenHeight-1] = (255,255,255)
del PixelArray
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
#pygame.display.update()
Если вы можете справиться с падением производительности, замена прямой настройки пикселя на (очень короткие) строки позволяет избежать утечки памяти, например: pygame.draw.line (Display, Color, (X, Y), (X, Y), 1)