タイトルによれば、Goで使用されているGCポリシーを変更することは可能でしょうか?Goに別のガベージコレクションポリシーを使用することはできますか?
答えて
Javaなどのようにまったく異なるコレクターを使用できるわけではありません。これは目的に合ったものです。どこからでもうまく動作し、GoプログラマにとってはGCパラメータのチューニングが専門になることを避けたいと考えています。
最もよく使用されるオプションはGOGC
です。デフォルト値の100は、本質的に、別の収集がトリガされる前の最後のGC後に生存していたデータ量の2倍にプログラムを拡大させます。 200を使用すると、最後のGCの後でライブデータの3倍までプログラムを成長させることができます.50は1.5倍に成長します。収集の正確なタイミングとペーシングは、1.5をGCと同時に作成しているため、ボットの下ではもう少し複雑ですが、ライブデータ量の約2倍のピークメモリ使用量を目標にしています。
実際に言えば、私が見てきたように、プログラムのガベージコレクションの負荷を軽減するためにメモリを増やすことが分かっている人が増えています。人々は、たとえば、少し高速化するために、GOGC=400
などのGoコンパイラを実行しています。しかし、CPU時間を数%増やすよりも多くのRAMを食べることでサーバを枯渇させるのはずっと悲惨です。
その他のノブはpackage runtime
に記載されています。現在の実装では、GCを強制的に停止させるか、runtime.GC()
を使用して、潜在的に世界を止める可能性のあるコレクションを明示的にトリガすることができます。 GCノブとは別にruntime
もReadMemStats
とプロファイルを得ることができます。はです。
一般に、小さなGCチューニングにはほとんど焦点を合わせたくありません。デフォルトはかなりうまくいっていて、通常、あなたの時間はあなたのアプリケーションを考えるのによく使われます。
- 1. Google App EngineでGoベンダーライブラリを使用することはできますか?
- 2. 別のレクサーを使用することはできますか?
- 3. ページネーション用に別のテンプレートを使用することはできますか?
- 4. Goでコンテキストマネージャを作成することはできますか?
- 5. Go:テンプレート内で使用できるモジュラスはありますか?
- 6. 複数のソースディレクトリにgoパッケージを開発することはできますか?
- 7. Goを使用してGoogleグループに新しいトピックを投稿することはできますか?
- 8. プレイストアのアップロード用に別のアプリケーションに同じエイリアスとキーストアファイルを使用することはできますか
- 9. Goで$ indexOfArrayを使用するには?
- 10. TextNodeに `ref`を使用することはできますか?
- 11. 窓にpyflinkを使用することはできますか?
- 12. ユーザーフォームにピボットテーブルを使用することはできますか?
- 13. ファイル名に「/」を使用することはできますか?
- 14. チャンクデータにDictVectorizerを使用することはできますか?
- 15. AssertEventFiredにIntegrationTestCaseを使用することはできますか?
- 16. は、私は別の場所でのSpring Beanを使用することはできますか一箇所に
- 17. GoのスライスをGoマップのキーとして使用できないのは、配列をキーとして使用するのと同じですか?
- 18. APIを使用せずにウェブサイトから別のウェブサイトにデータをエクスポートすることはできますか?
- 19. リストを使用することはできますがIListを使用することはできません。
- 20. なぜGoで空白の識別子を使用するのですか?
- 21. DjangoとNode.Jsを使用することはできますか?
- 22. JPaとHibernateを使用することはできますか?
- 23. SQL Transactionで 'GO'を複数回使用できますか?
- 24. goでmake(chan someStruct)を使用できますか?例えば
- 25. connectionDidFinishLoadingのUIGraphicsBeginImageContextを使用することはできますか?
- 26. goにvariadic関数を部分的に適用することはできますか?
- 27. Accessマクロを別のAccessデータベースで使用するアドインとして保存することはできますか?
- 28. ラムダ式で使用されるインタフェースとクラスを別々のファイルに入れることはできますか?
- 29. インフラストラクチャ検査に使用することはできますか?
- 30. 別のクエリーセットを別のクエリーセット内で使用することはできませんか?
Javaよりもノブが少なくて済みます。 – twotwotwo
現在、gcの実装には 'GOGC ='と 'GODBEUG = gcstoptheworld ='があります。これは実装とバージョン固有のものです。詳細については、[ランタイムパッケージのドキュメント](https://golang.org/pkg/runtime/)を参照してください。 – JimB
具体的にお願いします。何をしたいですか? – thwd