You only need to cover the RAM per account the contract is deployed on via the setcode action. Several users can use that contract without additional RAM usage however, if someone deploys the same contract to multiple accounts we don't de-duplicate them in RAM.
P.S.: On the Dawn 4.0 that I'm running accounts seem to have infinite RAM, so I have no idea ...
nodeos shared_memory.bin looks like thin provisioning.
so that, There is no problem even if my physical memory is 64GB that less than 128GB of chain_state_db size.
If you set 128GB to chain_state_db then nodeos don't using your physical memory for chain_state_db.
Most of the testnet just uses the same fee and ram policy as the mainnet. On testnet, you can just easily ask for faucet tokens for your test.
The Junlge Testnet is the most popular one.
However, if you really need a network environment with cheaper fees and ram fees for any reason, you might want to consider implementing your own network with modified ...