I’m curious how you’re measuring the memory allocation closely enough to know it’s exactly doubled?
My guess would be that you’re seeing a copy of the memory in GPU memory and another in main memory. three.js holds a copy of most resources (mesh geometry, texture data) in memory in case they need to be updated on the GPU. I believe it’s possible to remove the in-memory copy if you’re sure you won’t need to update the GPU memory later, but this is a bit hard to be sure of (e.g. to handle GL context loss).
If there’s more memory allocation beyond main memory + GPU memory then I’m not sure, it’s not impossible that there could be a bug here.
I’m measuring with performance.memory.usedJSHeapSize. It’s not super accurate, but the results are very consistent. It’s consuming ~200 MB extra with 512x512x400 Uint16 voxels. The figures correspond well to having an extra copy of the input data.
Been a few issues in the past with memory. Check your version and make sure its not an old R87 version. Also check out this stuff. Not sure how much applies to your ThreeJS version but could be applicable.