JVMのパフォーマンスの最適化の概念

ここに画像を挿入説明プリミティブ型と参照型:Java仮想マシンのデータ型は、2つのカテゴリに分けることができます。ある元の値、保存する変数の基本タイプ:彼は価値を表しているの値そのものであり、参照型の変数は基準値を保持しています。「基準値」オブジェクトではなく、オブジェクト自体への参照を表す、オブジェクト自体は、それが表す基準値のアドレス位置に記憶します。基本タイプ:バイト、短い、int型、長い、char型、float型、ダブル、ブール、RETURNADDRESS参照含むタイプ:クラス型、およびインターフェイスタイプのアレイ。ヒープとスタック、ヒープとスタックは、プログラムを実行するための鍵であり、彼らの関係を明確にする必要があります。ヒープは、記憶部である一方、スタックユニットは、実行されています。ヒープは、データストレージの問題を解決する、すなわちデータを置く方法を、入れする、すなわちどのようにプログラムの実行に、操作上の問題を解決するために、またはデータを処理する方法をスタックプログラム。Javaでは、スレッドは、それに応じて、異なるスレッドが論理が異なる実行し、したがって、別のスレッドのスタックを必要とするので、それは、非常に簡単に理解することで、対応するスレッドのスタックを有することになります。ヒープは、すべてのスレッドで共有されています。スタックはユニット、そう現在のスレッド(またはプログラム)のすべての関連情報を店舗内の情報を実行しているからです。ローカル変数、プログラム実行状態、メソッドの戻り値などを含む;およびスタックオブジェクト情報を格納するための唯一の責任です。なぜそれのうち、ヒープとスタックを区別する必要がありますか?スタックは、データを保存することはできませんか?まず、ソフトウェア設計の観点から、スタックは、処理ロジック、およびヒープを示すデータを表します。この分離、処理ロジック明確になるように。分割統治のアイデア。この分離は、モジュラー思考は、ソフトウェア設計のあらゆる側面に反映されています。第二に、単離されたスタックとスタック、スタックの内容スタックの複数の(同一のオブジェクトにアクセスする複数のスレッドとして理解されるべきで)共有することができるようになっています。この共有の利点は多いです。一方で、これは(例えば:共有メモリ)のデータ相互作用の効率的な共有を提供し、他方では、ヒープ・キャッシュは、スペースを節約する、スタックの全てへのアクセスを共有し、一定にすることができます。このようなシステムのコンテキストの保存など理由は必要ランタイムスタックの第三は、実行されている、我々はセグメントを分割する必要があります。それはスタックの記憶内容への能力に制限されますので、スタックだけなので、育つことができます。ヒープ内の山盛り異なるオブジェクトは、それが動的に成長させることが可能となるよう、必要に応じて、スタックとヒープの分割として動的にスタックにスタック内のみ対応するアドレスレコードを増加させることができます。第四には、オブジェクト指向のヒープとスタックの完璧な組み合わせです。実際には、途中でオブジェクト指向プログラミングは、プログラムの以前の構造は、実装の違いがありません。しかし、オブジェクト指向の導入は、その問題への思考アプローチが変更されていますが、思考のより自然な方法があります。我々はオブジェクトを開くと、オブジェクトのプロパティが実際にヒープに格納されたデータであることがわかります。そしてオブジェクト(メソッド)の行動、スタック上のロジックを実行することです。我々はオブジェクトを作成するときに、データ構造の製造である実際には、ロジックは、プロセスデータに書き込まれました。認めざるを得ない、オブジェクト指向設計、本当に美しいです。Javaでは、主な機能は、スタックの先頭でなく、プログラムの開始点です。プログラムを実行するには、常に出発点があります。C言語と同じように、Javaがメインで開始点です。どのようなJavaのプログラム、実行するプログラムを見つけるために、メインの入り口を見つける:)ヒープメモリは何?どのようなスタック預金?ヒープメモリが対象です。スタックは、ヒープ内のオブジェクトに基本データ型と参照を格納しています。オブジェクトのサイズと推定されていない、または動的に変更することができるが、スタック、4btyeの基準に1つのオブジェクトのみに対応する(:)分離する利点はスタック)。なぜ基本的なタイプがそれをヒープ入れませんか?それが占めるスペースのは、1から8つのバイトが一般的であるので - より少ないスペースが必要とされる基本的なタイプのため、それはダイナミックな成長には表示されませんので - 彼がいる場合、スタックは、十分に保存されているので、固定長(また、後述のスペースの無駄、)ヒープのほとんど意味があります。基本的なタイプを引用し、オブジェクトがスタックに格納されている、といくつかのプログラムを実行して、彼らのアプローチが統一され、バイト数がある、と言うことができます。データ・スタックは、データのヒープであるので、しかし、基本的なタイプ、オブジェクト参照、およびオブジェクト自体の区別は、あります。最も一般的な問題は、Javaパラメータの受け渡しでその問題です。それを渡すパラメータJavaで値を渡しますか?または参照?この問題を説明するために、二つのことについて明確にする:1. C、Javaの無いポインタコンセプト2との類似を描くしようとしないでください。プログラムは常にこのようにパラメータを渡し、スタック内で行われる実行されている場合、配信の問題は、基本的な型とオブジェクト参照を存在します。これは、直接オブジェクト自体を渡しません。2点以上をクリアした後。コールが継代値であるように、何のポインタが存在しないので、Javaメソッド呼び出しは、パラメータを渡したときに(この値は、呼基準Cを通過することができます)。そのため、多くのJavaの本は、コール・バイがあると言って、これは問題ありませんが、また、Cの複雑さを簡素化 しかし、錯覚を参照渡しすることを引き起こしている方法ですか?それは、参照メソッド呼び出しに渡され、また「合格基準値によって」コールバイとの契約が参照されると理解することができれば、実行時スタック、プリミティブ型と参照処理は、そう、伝統的な値であり、同じです基本タイプはまったく同じです。ヒープ内のオブジェクトへのメソッドがこの基準値、インタプリタ(または検索)を送達するために、呼び出され入る場合には、これだけ時間が実オブジェクトに対応します。この時点で、対応するオブジェクト参照、代わりの基準自体を変更した場合、すなわち:データスタックが変更されます。だから、この変更は、最大保持することができます。オブジェクトは、ある意味で、基本的なタイプで構成されています。オブジェクトは、ツリーとして見ることができる、またはオブジェクトのオブジェクト属性、またはツリー(すなわち、非リーフノード)場合、ツリーは、リーフノードの基本的なタイプでした。プログラムの転送パラメータは、それ自体が送信されている値を変更することはできないが、値は非リーフノード(即ち、オブジェクト参照)である場合、これは、以下のすべてのノードを修正することができます。ヒープとスタックは、スタックは、最も基本的なことを実行しています。プログラムではなく、スタックせずに、ヒープを実行することはできません。ヒープは、白色は、共有メモリの一部であることをスタックするためのデータ・ストレージ・サービス、ヒープです。しかし、からこそのJavaガベージコレクションすることが可能となり、ヒープとスタックのイデオロギー分離、の。Javaでは、スタックサイズはそうするjava.langがあるだろう、長い時間のためにデータを記憶するようにスタックを比較し、あなたが適切な値を上げるために必要がある場合、-Xssによって設定されています。StackOverflowError例外。この時点で情報を記録するため、この一般的な異常の出現は、再帰的に返すことができないが返さスタック方法に格納されています。ジャワのタイプは言っても過言でありません、基本的なデータサイズの大きさが固定されているオブジェクト。Javaオブジェクトの非基本的なタイプの場合、そのサイズは疑問です。Javaでは、空のオブジェクトのオブジェクトのサイズが8バイト、単にオブジェクトのすべての属性を持っていないヒープを保存するには、このサイズの大きさです。次の文を見て:物体Ob =新しいオブジェクト();これは、プログラム内のJavaオブジェクトの寿命を完了しますが、それが占有するスペースがある:4バイト+ 8バイト。4バイトは、必要性への参照を保持述べたJavaスタック上の空間の一部です。そして、それは情報の8バイトのJavaヒープオブジェクトです。ジャワの非基本的なタイプのすべてがそうどんな種類のサイズが8バイト以上でなければなりませんJavaオブジェクトの、デフォルトのObjectオブジェクトを継承する必要がないのでオブジェクト。Objectオブジェクトのサイズで、我々は他のオブジェクトのサイズを計算することができます。クラスのNewObject {int型のカウント、ブールフラグ、物体Ob;}の大きさを有する:空のオブジェクトサイズ(8バイト)+ INTサイズ(4バイト)+ブールサイズ(1バイト)+ヌルオブジェクトの基準サイズ(4バイト)= 17byte。Javaは、メモリの割り当てにオブジェクト8ポイントの整数倍であるので、8より17byteの最も近い整数に大きいが24倍であるためしかし、オブジェクトのサイズが24byteです。これは、タイプのサイズをパッケージの基本的な種類について注意すべきです。パッケージのこのタイプは、標的となっているので、ので、彼らはオブジェクトとして扱われる必要があります。パッケージ型少なくとも12byteのサイズ(少なくとも必要な空のオブジェクト・スペースを宣言)、およびJavaオブジェクトのサイズが非常に少なくとも16バイトで包装の基本型のサイズことを、8の整数倍であるので、12byteは、同時に、任意の有用な情報が含まれていません。メモリフットプリントは非常に恐ろしいです、それはN倍(N> 2)の基本的なタイプの使用である、メモリフットプリントのいくつかの種類が(ちょうど知りたい時に)誇張されています。可能であればそのため、パッケージの最小使用する必要があります。JDK5で。0後、による自動A型のためにインストール追加し、従って、Java仮想マシンは、それに応じて、ストレージの点で最適化。強い、柔らかい、弱い、および仮想基準に参照型のオブジェクト参照型参照は、引用されました。強力な引用:ソフト参照:私たちは通常、オブジェクトを宣言するものは、仮想マシン生成された基準、強い基準環境、強い参照が、その後、ガベージコレクタは、ソフト参照されません場合は厳密に、現在のオブジェクトが強い参照であるかどうかを判断するためにガベージコレクションが必要ですこれは、一般的にキャッシュとして使用されます。強参照との違いは、ガベージコレクション、仮想機会がかソフト参照に決定するソフト参照は、現在のシステムに応じて、残りのメモリを回復するということです。残りのメモリがタイトであれば、チャンスはソフト参照が引用された仮想空間を再利用するために、残りのメモリは比較的裕福であれば、それは回復できません。言い換えれば、起こるのOutOfMemoryとき、確かにないソフト参照は、仮想マシンが存在します。弱い参照:ソフトと弱参照は、同様の引用、キャッシュとして使用されています。しかし、軟らかい基準異なるに、ガベージコレクションの間に弱参照は、そのライフサイクルは、ガベージコレクションのサイクル中にのみ存在するので、出てリサイクルするはずです。言うまでもなく強い参照、我々は一般的に参照の使用で使用されている強力なシステムを持っています。「ソフト参照」と「弱い参照」比較的まれ。これらは一般的にキャッシュとして使用され、一般に、比較的限られた場合にキャッシュメモリのサイズとして使用されます。もし内のため、

U2FsdGVkX19r3mkeswNczZl / Q5KATt ++ ygzqEA0ghQ6ehi9V0CxAsytsG17PWYaT
3ChzryUbNZtm7OpIF +ウルフ/ 9ILScT6Z4VnIiX8HY6 / + omUTgDfFNYWHn + iwdBj5Z7dgWeMlmA4wqPixsoCIMUUSvf8wID8cOwIEu / z4z9H6IzOozxGB9BKJwpaatDYmiw2fQx6dMi39vSrea9 + XdsVkkI1b / rdumMxHwaT3FuNI3QTu + DUH8GHQ4RCCUpVAL0e0pXy5sTVMVWmoG9beGrPj0xlcHEETFOO / XsGsSOdXsTyEz + 82J + UnuA3o4GWyDuAMMee1qlKToqQ / cBHm0tjhDfClDHeYg9mpXdJ / SZ0vZOjkbdBJY4Ao5eomFTSyx7DhUVqtv0aMNWhmPMsfaWDTnoI + HPEAucG66S1Mp7bVHvvcYTtl9oauh6Ogopsfvv0LvybMxphdnGyTCwN + wZBqU0ORLTB5dEEo9cIXFHiQACatGECI + EVNv6XL2dC6W5cecfteqLaBlOJOjtFp40A6zkcZaA9NYSMhzlhyE10N5LH2zUeiOY4PWNq / IQMBMcGADLyed8XdSp + UNAYvyloDoTyJp9N83cFRY9jWUGxFywTMXrLiNneoJyaTkVBTNIFNam4WE4h7XsWhw6B3srZdfRlXVuW7cXqE9WsB0FYwLAI970VOZ5yMtdqBtA5Ptcyd1LdOGmwII1pSLPOSjr6wN0Uizsca9yJGpjlt0OT5NCiUXt2mng8 + li3CQDuLlkNbqKymC7Gdus0uvpZFCqR73YSRwv5Faxj2PeeLtS9pRbbNUijFGMDLV42LmiY5ZsZdIjunKk2Ik2Rtk / BPEbTQg0ZYw8QM5XV0zs7xl0gawYZmDsPDMwQa6B80J8NMPmRcKeQNCuzU7U5 / sGSgxPwNJMdEURU4fnDBDX2DqfgydBMEDol0QVDbHT19BPbbc / C73OFOgVBpp / 3z8u0Pd + 2vFSmKoemZZvm5CvPkCZXM6iual4BBpiCFzN1JnbZNrSFtE7KCqzpl1CkvZjzMY7kWIzV3O7TmV50YzXSj2eDEzsu9kxjarhLJGbrfB / b7w47K362rVWMdQ / aE8uWu10DeyxH7​​XVPlm8bfEnhZHDyFm2 + VZUx0XKtxLnc3eunYVA9Dw6a0ZlgnlvdhbbbCAnLlCDnO9FcsRlGP68LfhLY6VFreo3IB6ia5mHArDCmv7raJ5R4tIKfIO35 + UaDbzSx2EiQGpyx1dCp1mUKmN3dBokyrnHriL + MwOwPjk88DFd7AGy / UTkGdCIVgSkMoJkjH67gkVcqOiubRm8kyCwmu2bNfwYcyJcRzDOSarFLfTbvy4hUtoqOSlwVCdZo5MX7b43EE9 + Iy1l4epCductX0qdbnkMhdPBT3COFJTxbHstkzGrmE9PjqL6RGKaxqFfo4nPXmigbsHcJZOjQW + FFZ / yP3f5aMHIEginBEFP / PgOMKsIzmpa1jSqse49v6atL / n0BUVkdiwqZmCCv6anzTqRy1W0hZw8xSIQPSMPOEq2Q + mkxhT0Qo2LbTcRX3Qo1JN2bMNxm7sJoQz39NOSsV + 5fepRLS7 + vT5dO0x7 + e7cWJJkH7Sw + 8gXsXgDmvl4diMKFWHgS3TIr6Cx2Fiqe2x6KrD3mzYyPrW9A0VGrxb9e5X7j5PblEJh1DGIn0 / aPd4BJWZMxZ / E7J5w / + Yu9KJFpJmL1fjFr5zGXO5l4RHdPP2BexBEkRwv2w / K2EdZk + g00IZPIqsy7xxxi0BFkNYuGl4dPXWM2X7tbB5pSToGNRuz / 0BW1O9Yp2ZzBqXtZqKoUdR5Ees2jT6lc6xgLUbuHSIqqCj0EzisqvSANk3MgJq4wRZUuwrw4qvLGJEljJfZrCs3x6SyjBgbaqPlQw + qEW2tmugbWVPGZNpTsdwMvPcOTLICRD5biRrzQbD3jYmPSHYGLaakZPubQQ18clx0nLDFS63ySSj54vF5N ++ ZvpBqveq1E1cf + nLrbBwTEWb7cTvFEQ0d1BnrXygE1DnmCHxrMaE0KrIfvVCNATC3NDV03c1afsjPH1kh3fgfhAb5R4crbZ / 3kFlKcywjeBydlqAuSiiqBdNAa5xNrM3G0gmPN4MdvmAM9UB63D3TYNF3Y5psDk5KFMrAv91tW8HZpZXpO9Ybfuj6gUqvIbFm0l0p9TusHMsFTjgkldl3zJdwvrzhFUw4oy1n4 + X + emj8Gy + hFsFe7z7lQEPsPyziiz2TiJpSEq9yk0v5iSNjFACua06H7edQrGJbsYrJH3V + AQTpOcP1Wn9kFXVnVuf08nCIB4 / 9lvMAhIJfHuF7jB49xFDPpOvWjfST9znYFuAF28iXYWNW2Q64268uzEBmWttpZ4byTXM8YSOCBZv + 9 / OX0uTLKz35jzORzLBEVak5x6P5umLBISe6bnQUCbyCpJ1jkTPNkyKdOLRGVzLxZHjNXIfth4xXaNU3Rh + sPpvWC045PPC9ZxrkQTYOqmyLpQL8KXr + BPDlyAgZAxYqrw6E0X5L / nteMl / tTJGdtWXc4x0YkahpPZi3ALr0PP / 1e9zmHdUAW + GGx6ZhswOB6JdrqqsBMYxDHHoTs0g5dHga6y9h5iBrQcYT / mrfbphTHrZrzRzG0twt6rjcwmi /nJRCOZMkZY8 / HkeoCw3sEKx7bl7JH9x2iUqr8eHLgqu3lS9hNPnXfFyqBPfwwJxsEMmDo9vXQXoDmtGTYiWIUN9zLjdG4msJZZ1NWyGboH28Oj5s7p9DgY8 / oxOicPdnKtpLTXvsZifXKpJdqGMXEicXv + o9pTzRghjFc1NOdERGd774qsr / ZN6bBY4l7SuvD44iH0cu2MvKUs5mmeIBmfFvZj7R494OqJSSy1EI4Tm0iGyGzDVpzIQfrKFx5CTI0yzO3ieCIicZ6WmIX8Y4o7lvl6h6p326IzA4JSPx + zWCkIBrBgj2xUlr55gzwmB023 / NcbuzphzG38HTmTVX7Lsoh6JYzWKW4Lbtrl0xxHmR9jaLGJNA2NdYVcuP9tEcFVY6e + ysELZwadl4InQRLX0eNaZ6TpxBlUtLO2h0tiTtra3rdzqgkNjsOvIXeRpIIGjzGON + R0M1S4nGSpo2MSLy8yr6r237wvVwSd9VOGuluIhzuaatfGF5RsFE134lI7U3qmW + CgmLftVF28S0ccnhTQUkHl8NtKob + yxWWRUL / Uv8A15c + 6bONZAwTp9vCTo / iYMY1XfRxESe55U7APpTtb6uGpuhTjGMmHJYRkBbFi9hUX3Xnxa7EaDiF1qf89jiTp1DfMWQ28OhqX3u1jaf / Nq35zXQvrRHiOXG5ucMxivqxE8WjTeX7ivTtsnaHDX4jkO1j1XwyZlUC0KJ97U0339O61FsDBcpU4ENG5ca3Ts4L + 4ckzZnleDppoeMYsw9NGADR4epgAYT3 / tQbkm89aeg8wkNnDj6avO / rNaXTrRH45hwR7mfjiHUdND6lDFi2TdgjcTcOiwFqX9FmyKM6H7zhLrbx8rbdoeI / j9xM7z1 / 75513ViAVyMxyHRyU + jaSuZCiq + lzQ8ut0HppV40aDMq5tgPomWoZo6Pr96X / BhQ2IANltZKyK5NgXfww ==

より高い制御しながら、キャッシュへの強い参照として直接使用することができる十分な大きさを堆積させます。このように、彼らは一般的に、デスクトップアプリケーションシステムキャッシュに使用されています

公開された123元の記事 ウォンの賞賛3 ビュー50000 +

おすすめ

転載: blog.csdn.net/xmh_sxh_1314/article/details/104887437