Тема: TAnimImage
Показать сообщение отдельно
Старый 19.06.2007, 13:21   #7
jimon
 
Сообщений: n/a
SBJoker
щитаеш меня за идиота ? естествено что вызывал
иначе бы память во внутренем манагере прыгала
а так она оставалась всегда константой ...
а память в виндовском манагере откровенно текла

ну вот смотри ... и обьсяни тогда мои наблюдения :

тестовый код
Framework brl.GLMax2D
Import BRL.PNGLoader 
Import brl.jpgloader

Type TResourceImage
	Field Image:TImage
	
	Method Delete()
		DebugLog "eta hren tozhe vizivaetsa ! "
		Image = Null
	End Method
	
	Function LoadResource:TResourceImage(file$)
		Local Res:TResourceImage = New TResourceImage
		Res.Image = LoadImage(file)
		Return Res
	End Function
End Type

Global ResourceManager:TResourceManager

Type TResourceManager

	Field Resources:TList
	
	Method Delete()
		DebugLog "eta hren vizivaetsa ! "
		Resources.Clear()
		Resources = Null
	End Method
	
	Method CreateNewResource(File$)
		Local Res:TResourceImage
		Res = TResourceImage.LoadResource(File)
		Resources.AddLast Res
	End Method
	
	Method LoadResources()
		CreateNewResource("circlefont.png")
	End Method
	
	Function CreateResourceManager()
		 ResourceManager = New TResourceManager
		 ResourceManager.Resources = New TList
	End Function

End Type



Graphics 100,100

GCCollect()

While Not KeyHit(KEY_ESCAPE) Or AppTerminate() 

TResourceManager.CreateResourceManager()
GCCollect()
ResourceManager.LoadResources()
GCCollect()
ResourceManager = Null
GCCollect()

DebugLog GCMemAlloced()

Wend
End
память во внутренем манагере не течет
нажимаем ctrl+alt+del и смотрим там скока ета тварь жрет памяти
оказывается что жрет по наростающей ...

коментируем строчку Import brl.jpgloader
пробуем опять, память не течет ... вопрос какого хрена ?!

ps. как потом оказалось ... (я ету проблемму пару дней тому назад решал)
что собстенно методы Delete \ Free не решают етой проблеммы
так что принципиально я использую Free чтобы избавится от кросслинков
 
Ответить с цитированием