How do I switch between World Partition Levels?

I have several Levels, all of which are of the World Partition type. I haven’t found any information on how to switch between different World Partition Levels dynamically, and I want to unload and load them dynamically. Because we create different Levels between iterations of versions, but they are all large, so we ended up using World Partition. Currently, we are still using the Streaming Level approach to switch between them, through APIs like

UWorld::AddStreamingLevel(ULevelStreaming*)
UGameplayStatics::LoadStreamLevel()
 UGameplayStatics::UnloadStreamLevel()

However, when I unload Levels, I find that the memory usage never gets released; it keeps accumulating until the memory usage exceeds 90% after switching through a few Levels. So I start to doubt whether using the Streaming Level approach to switch between World Partition Levels is reasonable. Are there any other methods?