i pass a hash-reference to the thread, so the thread gets (a copy of) the reference - BUT the data referenced by the hash-reference should be only once in memory ?
No. The reference is a copy of the reference, and the data is a copy of the referenced data. Again, see perlthrtut, and threads::shared. Threads don't share things as you might come to expect if you think of C-level threads.