Hacker News new | ask | show | jobs
by mejutoco 1214 days ago
> at least not until AIR came along and Flash expanded into the desktop world.

Sorry if it sounded arrogant. At the time I was developing a display application for hospitals (showing what is in each floor, etc. on screens), and our prototype was running 2 instances of it, and killing one and switching to the other to keep this memory leaks in check (horrible hack, I know). It was nothing too fancy, and it was still causing memory leaks when run for a long time.

I believe these were already the Air times.

Maybe it was not on each Flash player version. I found a couple here as an example:

https://blog.gskinner.com/archives/2005/10/major_flash_pla.h...

https://www.reddit.com/r/RotMG/comments/19kc4u/memory_leaks_...

1 comments

I worked on a browser MMO game TimeZero. It used to be the second most popular game in Russia in early 2000's. Had about 5000 online users and ten times that much of active accounts. We had a lot of different problems with Flash player, but memory leaks weren't a thing.

Grant Skinner was a... popular person in Flash community... but, you also need to understand that Flash community, almost entirely, was amateur programmers. Looking back at those days, I feel the same kind of light embarrassment like when I thought I'd discovered some new fundamental theorem in algebra when I was in mid school only to later learn that it's something we'd learn about a year later.

So, what he discovered can be summed up as "works as intended". It's not a memory leak. His mistake was literally:

> function variables are transitory – they should only exist during execution of the function.

He's both confused between variables and values, and believes that common behavior is the only possible one. It's easy to make this mistake if you never work with entities like, eg. sockets or threads and similar system resources that have to be explicitly released by the program because the system that created them doesn't track their lifetime.

In other words, that's not a memory leak. A memory leak would be something like if BitmapData.dispose() didn't actually free memory.

I believe that the reason for this kind of behavior was that BitmapData would be also implicitly used by the player's own rendering layer which had to be explicitly instructed to remove it, if the program no longer needed it.