あるオブジェクトを singleton にしたところ、2つの副作用がありました。
1つは「画面の向きを変えても状態が保持される」
1つは「アプリケーションを閉じて再起動しても状態が保持される」
です。

どちらも static 変数が GC されないためだと思いますが、前者はそのままに、後者は回避する方法があれば教えてください。

そもそも singleton にする必要はあまりないと思われるので、singleton をやめて状態保存のコードを書けというのでも構いませんが、状態保存のやり方は分かっていないので簡単に解説してください。