Yes, it is relatively easy to manage what is loaded in memory. Playcanvas by default will load all assets that have the asset.preload property to true during app load time or when they become first required during app play time (e.g. a model needs to be rendered, all materials and textures referenced by it are automatically loaded).
You can use the asset.loaded property to check if something is loaded or not.
What Playcanvas won’t do automatically is unload stuff from memory, but it provides the method to do so in code, asset.unload():
Ideally you should aim to have assets loaded in memory that are visible or about to get visible on screen, and afterwards you should unload them to free memory space. You can use the Profiler to monitor the total video memory used.
To reload an asset you unloaded manually you use the load method provided by the AssetRegistry:
You can read how Playcanvas handles assets loading here: