ユーティリティクラスのコンストラクタをprivateにする十分な理由が分からない

privateコンストラクタにする理由がメモリ使用率だけなら、わざわざ不可視化しなくても良いのではないか?


以下のようなコードをよく見かける。

public class HogeUtils {
/** インスタンス化を防ぐ */
private HogeUtils() { };

private String foo() {
....
}

何でprivateコンストラクタにしてまでインスタンス化を防ぐのか日本のGoogle先生に聞くと
次のような主旨のような回答が返ってくる。

無駄なインスタンス化を防いでメモリ消費(GC発生)を防ぐ

今の実行環境*1でこれを気にする必要があるのだろうか?

privateコンストラクタを見て思うこと

  1. そもそもフレームワークの仕組みでSingletonにできないのか?
  2. privateコンストラクタのカバレッジ率も求められたら面倒
  3. newするやついないし、されても誰が困る?

1.はSpringなどのフレームワークを使っていれば通常Singletonになる。
2.はカバレッジ100%とかを求められるケースでツールによっては発生する。Reflectionを使えば出来るけど、アホらしい。
3.やっちゃうメンバーは教育すれば良いし、やれてもループ外だったら致命傷にはならない(コンパイラ最適化で回避もできる)

*1:組み込みは除く。クミコマーには頭が上がらないです。