mem leak blues
BlitzMax Forums/BlitzMax Programming/mem leak blues With the way the garbage collector works you should be able to delete the instance by simply doing obs = obs[..maxob + 1] .
In fact you can do everything that whole piece of code does like this.
In fact you can do everything that whole piece of code does like this.
maxob:-1 obs = obs[1.. ]
ignore the for loop that was so I could remove somthing mid
array
you'd think you'd be right, but it's leaking like a sieve!
array
you'd think you'd be right, but it's leaking like a sieve!
try this Chris C
EDIT: heres the results I get:
EDIT 2: Better example :P
Print GCMemAlloced() Local maxob% = 10 Local obs[] = New Int[maxob] Print GCMemAlloced() maxob:-1 obs = obs[1.. ] GCCollect() Print GCMemAlloced()
EDIT: heres the results I get:
13664 13750 13170 <-- Crazzy!
EDIT 2: Better example :P
Print "Mem = " + GCMemAlloced() Local maxob% = 10 Local obs[] = New Int[maxob] For i = 0 To maxob - 1 obs[i] = i Next Print "Mem = " + GCMemAlloced() Print "Last object value = " + obs[maxob - 1] Print "First object value = " + obs[0] maxob:-1 obs = obs[1..] Print "Last object value = " + obs[maxob - 1] Print "First object value = " + obs[0] GCCollect() Print "Mem = " + GCMemAlloced()
doesnt make any difference if I [1..] or [..x+1]
still leaking like crazy
obs contains another type that holds a milkshape model type
that has a texture and bunch of vert's
I even tried assigning all its arrays as =null but its still leaking and the memory in the task manager *never* goes down...
although gcmemalloced goes down in taskmanager the memory used doesnt go down
still leaking like crazy
obs contains another type that holds a milkshape model type
that has a texture and bunch of vert's
I even tried assigning all its arrays as =null but its still leaking and the memory in the task manager *never* goes down...
Print "Mem = " + GCMemAlloced() Local maxob% = 1000 Local obs[] = New Int[maxob] For i = 0 To maxob - 1 obs[i] = i Next Print "Mem = " + GCMemAlloced() Input$ For x=0 To 999 maxob:-1 obs = obs[1..] Next GCCollect() Print "Mem = " + GCMemAlloced() Input$
although gcmemalloced goes down in taskmanager the memory used doesnt go down
Because BlitzMAX uses memorypools to manage memory. Allocating and deallocating memory is an expensive operation, reusing it is not.
You cannot prove a memory leak in 7 lines of staic code (unless you're doing your own memory management). You have to have real code running for several hours, and notice a significant change in memory footprint. If you have a real memoryleak, the OS will start swapping memory around like crazy.
You cannot prove a memory leak in 7 lines of staic code (unless you're doing your own memory management). You have to have real code running for several hours, and notice a significant change in memory footprint. If you have a real memoryleak, the OS will start swapping memory around like crazy.
found it there where int used instead of tbank
for 2 createbanks...
gcalloced goes back down to the same value when
items are deleted, but mem used in the task manager only ever goes up (Every time I create an object)
it sometimes goes down but seems to be behaving okay
as if i create 100 objects then delete them then create
10 more it doesnt go any higher...
So I guess max is keeping hold of allocated memory in case
it needs it for somthing else?
for 2 createbanks...
gcalloced goes back down to the same value when
items are deleted, but mem used in the task manager only ever goes up (Every time I create an object)
it sometimes goes down but seems to be behaving okay
as if i create 100 objects then delete them then create
10 more it doesnt go any higher...
So I guess max is keeping hold of allocated memory in case
it needs it for somthing else?