問題タブ [jol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1886 参照

java - Java オブジェクトは Android のメモリにどのように配置されますか?

私は、HotSpot のヒープ上のオブジェクトのレイアウトにはかなり精通していますが、Android についてはあまり詳しくありません。

たとえば、32 ビットの HotSpot JVM では、ヒープ上のオブジェクトは 8 バイトのヘッダーとして実装され、その後にオブジェクトのフィールドが続きます (1 バイトはboolean、参照は 4 バイト、その他は想定どおり)。特定の順序で (スーパークラスのフィールドにはいくつかの特別な規則を使用して)、8 バイトの倍数になるようにパディングされます。

調べてみましたが、Android 固有の情報は見つかりませんでした。

(Android でのメモリ消費を最小限に抑えるために、非常に広く使用されているデータ構造を最適化することに興味があります。)

0 投票する
1 に答える
723 参照

java - jol GraphLayout出力の「(何か他のもの)」とは何ですか?

jol の GraphLayout クラスを使用して、オブジェクト インスタンスから参照されているオブジェクトのグラフを出力すると、出力エントリの一部に、タイプと参照パスの代わりに「(something else)」と表示されます。たとえば、20 個のランダムな Integer オブジェクトのリストのグラフを出力する次のコードを考えてみましょう。

このコードは次を出力します。

DuckDuckGo と Google で を検索しjol "something else"ても、有用なヒットは返されませんでした。

"(something other)" エントリは何を表していますか?

0 投票する
2 に答える
559 参照

java - string vs byte[] を値として使用、マップでのメモリ使用量

文字列の代わりにバイト[]を使用するとメモリを節約できる複数の場所でそれを読みました。jolを使用してテストしたかったのです。

ここで私のテスト:

ここに私の結果があります:

ご覧のとおり、StrByteMap と StrStrMap のメモリ使用量はほぼ同じです。ここで間違ってテストしていますか?

更新:以下の@Amod Pandeyの質問を参照してください。理由も知りたいです。

0 投票する
1 に答える
207 参照

java - JOLSample_16_AL_LL の ArrayList のフットプリントを理解しようとしています

問題のコードへのリンクは次のとおりです- http://hg.openjdk.java.net/code-tools/jol/file/07087260ce41/jol-samples/src/main/java/org/openjdk/jol/samples/ JOLSample_16_AL_LL.java

コードをそのまま実行すると、次のように表示されます。

[Ljava.lang.Object; の 4952 バイトがどこにあるのかわかりません。から来ています。ArrayList の作成を更新し、初期サイズを 1000 に設定して成長しないようにすると、次のようになります。

ありがとう。

アップデート

CompressedOops (-XX:-UseCompressedOops) をオフにしました。新しい結果は次のとおりです。

そのため、CompressedOops を無効にすると、参照サイズが 8 バイトに増加します。オブジェクト配列が 1000 個の整数オブジェクトへの参照を保持していることは、私にとってさらに理にかなっています。

0 投票する
1 に答える
114 参照

java - オブジェクト ヘッダーのマスク ワードのビットを変更してオブジェクトを固定する

オブジェクトヘッダーのマークワードのビットの1つを自分で設定することで、オブジェクトがGCによって移動されるのを防ぐことができるかどうか疑問に思っていました(GCをだまそうとしています)。

したがって、基本的に、この方法でマークされたオブジェクトが常に同じメモリアドレスを持つことを保証できるかどうかを知りたいと思います。

0 投票する
1 に答える
2890 参照

java - jol は Java9 で少し壊れていますか?

Java-9 ビルド9-ea+149 および jol 0.6を使用します。

この簡単なコードを実行します:

出力:

このアクセス拒否部分は、メソッドの FieldData.java から取得されます。

実際の例外は次のとおりです。

フィールドを保護された一時的な int java.util.AbstractList.modCount にアクセス可能にできません: モジュール java.base は、名前のないモジュール @479d31f3 に対して「java.util を開きません」。

これは、安全でない機能がロックダウンされていることに関係していると思います。問題は、これを実行するにはどうすればよいですか?

私は次のようなプロパティを見てきました:

しかし、それがどのように見えるべきかを本当に伝えることはできません。