「この件に関する詳しい情報をどこで見つけられるか知っている人はいますか」という質問に対する最良の参考文献は、@ Raymond Chen が指摘したPaul Wilson の調査論文です。
既存のガベージ コレクター アルゴリズムの概要については、このリンクを確認してください。
(1)と(2)の2つの方法のうち、両方でチェックする必要があると思います。
特定の制約でヒープを定義したと仮定します.(主な制約はsize_t maximumSize , base , limit ,NoOfBytesAllocated
です) . したがって、そのヒープ構造にさらにいくつかのフィールドを追加するとlimitForGcInSizeMinor ,limitForGcInSizeMajor limitForGcInObjects
、より良い方法で GC の状況に取り組むことができます (ヒープ構造に既にこのフィールドがある場合は無視してください)。
SO 割り当て >= limitForGcInSizeMinor はいつでも GcMinor を実行します (ワールド メカニズムを停止するか、同時実行することができます) 。割り当てが limitForGcInSizeMajor に達した場合、GCMajor を実行します (stop the world のようなもの)。GCMinor と GCMajor を分割する主な理由は、GC スパイク (世界のメカニズムが停止したとき) の影響を最小限に抑えることです。
したがって、GC に沿ってずっと (2) の方法に従いました。つまり、定期的にヒープ割り当てを使用してチェックすることです。私はそれをCMSアルゴリズムから借りました。