Private v2 - GC and manifests

Issue type: Question
OS Version/build: Ubuntu 16.04LTS
App version: docker: 17.06.0-ce, registry:2
Steps to reproduce: Push a lot of images through automation?

I have a private registry containing 3 tags for our repo which are pushed via CI tools. I ran bin/registry garbage-collect --dry-run /etc/docker/registry/config.yml today and noticed that for the 3 tags I have on this repository, there are 84 manifests and 0 blobs eligible for deletion. I am unsure why 3 tags require 84 manifests and was hoping someone could explain why the ~2GB container is using up ~22GB of space. I would think at most the 3 tags (different branches) would take up 4GB space at the most, since all but 2 layers are the same. Is there something I am missing with how tagging works? I thought registry/repo:latest would replace the previous one and as part of GC, all previous versions of the tag would be cleaned up. Thanks for any clarification you can provide here.