Andy90 Posted March 28, 2024 Share Posted March 28, 2024 Hello, when you change a map the usage memory increase but never decrease. This means there is something allive what should not be allive. You can reproduce it with this code. Just hit multiple times T and see how the memory increases every time. #include "UltraEngine.h" #include "ComponentSystem.h" //#include "Steamworks/Steamworks.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { #ifdef STEAM_API_H if (not Steamworks::Initialize()) { RuntimeError("Steamworks failed to initialize."); return 1; } #endif RegisterComponents(); auto cl = ParseCommandLine(argc, argv); //Load FreeImage plugin (optional) auto fiplugin = LoadPlugin("Plugins/FITextureLoader"); //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Ultra Engine", 0, 0, 1280 * displays[0]->scale, 720 * displays[0]->scale, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Create a world auto world = CreateWorld(); //Load the map WString mapname = "Maps/start.ultra"; if (cl["map"].is_string()) mapname = std::string(cl["map"]); auto scene = LoadMap(world, mapname); //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { world->Update(); world->Render(framebuffer); #ifdef STEAM_API_H Steamworks::Update(); #endif if (window->KeyHit(KEY_T)) { scene = LoadMap(world, mapname); } } #ifdef STEAM_API_H Steamworks::Shutdown(); #endif return 0; } 1 1 Quote Link to comment Share on other sites More sharing options...
Josh Posted March 30, 2024 Share Posted March 30, 2024 I am guessing this is probably a circular reference in one of my components but will need to test more to find out... Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted January 17 Share Posted January 17 bump Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Andy90 Posted February 9 Author Share Posted February 9 Just want to push this again. Quote Link to comment Share on other sites More sharing options...
Josh Posted March 4 Share Posted March 4 I am done for the day, but I did solve several memory leaks in another issue...will examine this one soon. Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted March 7 Share Posted March 7 In my first test, this does produce a memleak. This is my testing code. Next I will test simpler scenes and see what is the cause. #include "Leadwerks.h" #include "ComponentSystem.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { RegisterComponents(); auto cl = ParseCommandLine(argc, argv); //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Ultra Engine", 0, 0, 1280 * displays[0]->scale, 720 * displays[0]->scale, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Create a world auto world = CreateWorld(); //Load the map WString mapname = "Maps/memtest.map"; if (cl["map"].is_string()) mapname = std::string(cl["map"]); auto scene = LoadMap(world, mapname); //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { world->Update(); world->Render(framebuffer); window->SetText(GetMemoryUsage(true)); if (window->KeyHit(KEY_T)) { scene = LoadMap(world, mapname); } while (PeekEvent()) WaitEvent();// clear the events out } return 0; } Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted March 7 Share Posted March 7 Interesting...even an empty map with no entities in it causes the memory usage to permanently increase by about 10,000 bytes each load... Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted March 7 Share Posted March 7 Okay, so when I set the sun light color to black / 0, which causes the scene to not contain any directional light, the memory usage becomes stable. So we know directional lights are one cause of a mem leak. memtest.zip Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Andy90 Posted yesterday at 05:44 AM Author Share Posted yesterday at 05:44 AM this is very intresting. So the leak could be related to lights ? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.