So i just learned that we can create new canisters by using “Actor Classes”
I want to create an ever expanding array that keeps on storing whatever I feed to it. And I have been thinking, is there a way to get how much % of heap memory and how much % of stable memory that my main/children canisters are consuming? I need to know these details so I can know when to stop accepting new data and begin creating new canister/actor class. For example, if the canister has utilized 99% of stable memory size (stable var arrays), and 99% of heap memory size (TrieMaps), then I would like to “let actorClass = await ActorClass.ActorClass()” and keep the principal id into my main indexer canister for lookups.
How do I upgrade these created actor classes, if one day I would like to change the underlying design/datastructure of it?
Is using Actor Class the best practice of creating new canisters? Or should I learn about using the IC Management canister (“aaaa-aa”)? If the latter, then where can I learn more about this? Is there an example for creating/installing/upgrading canisters by sending intercanister calls to IC management canister?