Javaについてはよくわかりません。
私はいくつかのリンクを調べていて、ブログに「スタックに格納されたJavaプリミティブ」と書かれているのを見つけました。これは、インスタンス変数またはローカル変数に依存していると思います。
いくつかのリンクをたどった後、私の結論は、
クラス変数 (プリミティブ) は、ヒープに含まれるオブジェクトの一部としてヒープに格納されます。
クラス変数 – オブジェクト (ユーザー定義) – は、含まれるオブジェクトの一部としてヒープに格納されます。これは、参照と実際のオブジェクトの両方に当てはまります。
メソッド変数 – プリミティブ – は、そのスタック フレームの一部としてスタックに格納されます。
メソッド変数 – オブジェクト (ユーザー定義) – はヒープに格納されますが、ヒープ上のその領域への参照は、そのスタック フレームの一部としてスタックに格納されます。Object に別のオブジェクトが含まれている場合、参照をヒープに格納することもできます。
静的メソッド (実際にはすべてのメソッド) と静的変数はヒープに格納されます。
私の理解が間違っている場合は修正してください。ありがとう。