Using Alt + D to duplicate light meshes with heavy modifiers (like a leaf with a particle instance modifier or a trunk with a subdivision modifier) can lead to huge memory usage. Because only the base mesh is instantiated. The output mesh of the modifier, won't be instantiated. If you have 1000 trunks with a subdivision of 6, they will take 1000 times the required place in memory.
How can I instantiate efficiently such objects ?
Applying modifier works but doesn't allow efficient editing and produce big blend files.
Using Particle systems doesn't allow precise positioning. Hair systems allow particle painting, but hair are not visible in top view and if the emitter's mesh is modified, the "hairs" move as well, destroying everything.
This question comes following that question Convert large particle system(s) to one object efficiently, where I had big memory problems.