Преимущества частного конструктора - шаблон проектирования Singleton

Я понимаю, что это помогает создать единственную копию класса.

Я бы хотел знать:

  1. Какой вред в создании нескольких таких экземпляров класса? так как сборка мусора позаботится об этом.
  2. Разве это помогает, когда его используют несколько классов / потоков, а у Java может не хватить памяти?
  3. Это помогает избежать утечки памяти?
  4. Как решить, лучше ли использовать шаблон синглтона для меня?

Или не могли бы вы привести меня к ресурсам, которые могут быть полезны, чтобы узнать больше об этом.

Спасибо