Since mining is resource intensive process, how to make it more efficient for a lightweight client in terms of memory. I am ready for a trade off even it takes more time to mine than what it would take for a normal client.
The simplistic answer
For a mining client node, the best (i.e. smallest) memory footprint you could hope for would be dictated by the size of the DAG file. As the DAG file is currently over 1GB in size, and will only get bigger, I don't think what you're hoping to achieve is currently possible.
A DAG (a Directed Acyclic Graph) is a large dataset created by a version of the Dagger-Hashimoto Algorithm, and which is used by Ethereum's Ethash proof-of-work algorithm (i.e. it's directly used by miners).
More details: What actually is a DAG?
It essentially provides memory-hardness, meaning that mining by ASICs, which are popularly used in Bitcoin mining, is no more favourable than mining with CPUs or GPUs.
- What's the best Hardware for Mining Ether?
- Ethash on the Ethereum wiki: https://github.com/ethereum/wiki/wiki/Ethash
You could look into splitting up the DAG file into chunks. I believe this has been discussed in the past, but I don't know what came of it - others may know more about this. See issue #2559 for a related discussion.