On demand saving and loading at granular level

Suppose character has 100 items.
only 1 of them is used at any one time.
thus, no need for other 99 to be loaded in memory.
but, each item has state associated with them.
i want to recreate the item when it is “activated”.

is SaveGame any good?
some Serialization API?

SoftObjectReference / IndirectObjectReference. There is more work involved, and you may have to do something to hide the loading, so I would only recommend doing this if you really need to free the memory.

If you still feel like you need to do it, you could at least discouple the “functional data” like the item state to be always loaded but then the heavy data like the 3D assets be used as soft object references.

SaveGame objects are intended to be used for writing data to the disk, so that the data is persistent even between play sessions.