About Cosense
Help
Log in
mrsekut-p
G
o
の
G
C
f
r
o
m
G
C
概
要
ス
ト
ッ
プ
・
ザ
・
ワ
ー
ル
ド
に
よ
る
停
止
時
間
を
減
ら
す
こ
と
を
最
優
先
に
常
に
改
良
さ
れ
て
い
る
G
o
1
.
1
0
C
o
n
c
u
r
r
e
n
t
M
a
r
k
&
S
w
e
e
p
G
C
コ
ン
パ
ク
シ
ョ
ン
や
世
代
別
G
C
は
行
わ
な
い
ラ
イ
ト
バ
リ
ア
の
オ
ー
バ
ー
ヘ
ッ
ド
が
許
容
で
き
な
い
か
ら
参
考
G
o
1
.
5
t
r
i
-
c
o
l
o
r
G
C
g
o
の
メ
モ
リ
ア
ロ
ケ
ー
ト
に
つ
い
て
h
t
t
p
s
:
/
/
b
l
o
g
.
l
e
a
r
n
g
o
p
r
o
g
r
a
m
m
i
n
g
.
c
o
m
/
a
-
v
i
s
u
a
l
-
g
u
i
d
e
-
t
o
-
g
o
l
a
n
g
-
m
e
m
o
r
y
-
a
l
l
o
c
a
t
o
r
-
f
r
o
m
-
g
r
o
u
n
d
-
u
p
-
e
1
3
2
2
5
8
4
5
3
e
d
h
t
t
p
s
:
/
/
c
h
r
i
s
t
i
n
a
0
4
.
h
a
t
e
n
a
b
l
o
g
.
c
o
m
/
e
n
t
r
y
/
w
h
y
-
g
o
l
a
n
g
-
i
s
-
g
o
o
d
h
t
t
p
s
:
/
/
d
e
e
e
e
t
.
c
o
m
/
w
r
i
t
i
n
g
/
2
0
1
6
/
0
5
/
0
8
/
g
o
g
c
-
2
0
1
6
/
h
t
t
p
s
:
/
/
d
e
e
e
e
t
.
c
o
m
/
w
r
i
t
i
n
g
/
2
0
1
6
/
0
6
/
2
9
/
t
o
c
/
h
t
t
p
s
:
/
/
p
o
s
t
d
.
c
c
/
g
o
l
a
n
g
s
-
r
e
a
l
-
t
i
m
e
-
g
c
-
i
n
-
t
h
e
o
r
y
-
a
n
d
-
p
r
a
c
t
i
c
e
/
h
t
t
p
s
:
/
/
b
l
o
g
.
g
o
l
a
n
g
.
o
r
g
/
i
s
m
m
k
e
y
n
o
t
e
h
t
t
p
s
:
/
/
d
e
e
e
e
t
.
c
o
m
/
w
r
i
t
i
n
g
/
2
0
1
6
/
0
5
/
0
8
/
g
o
g
c
-
2
0
1
6
/
参
考
G
o
シ
ス
本
G
o
G
C
-
L
I
N
E
E
N
G
I
N
E
E
R
I
N
G
#
G
o
Related
Sort by
Related
Modified
Created
Last visited
Most linked
Page rank
Title
Links
tri-color GC
from [GoのGC]tri-color GCインクリメンタルかつ並行にMark Sweep大きなヒープサイズでも10ms前後の停止時間三色抽象化と関係ある?まとめる?[三色抽象化(tricolour abstraction)]
GC
[/ Garbage Collection][ヒープ領域]上のゴミを自動で回収し、再度利用できるようにする[データ領域]や[スタック領域]から辿るGCがないとどうなるか手動でメモリを管理しないといけない
Go
GC
『Javaパフォーマンス』
Ownership
[所有権_]メモリなどの資源を制御する静的に[メモリリーク]を防ぐ[GC] に頼らずに解法済みのオブジェクトにアクセスできないようにできる[GC]の問題点である[Stop The World]を起こさずに済む
『コンパイラとバーチャルマシン』
スタックとヒープを知る
ざっくりAssemblyScript
Mark Sweep GCについて
John McCarthy
[Lisp], 人工知能, [GC]の父https://ja.wikipedia.org/wiki/ジョン・マッカーシー
『ガベージコレクションのアルゴリズムと実装』
メモリリーク
ヒープを利用するときに、用済みのデータ領域を開放せずにゴミが溜まる状態「メモリリーク」って名前わかりにくくない?[mrsekut.icon][メモリリーク]を防ぐためには、不要になったリソースをどうにかして管理する必要がある動的に不要オブジェクトを見つけて削除するのが[GC]静的に型でごにょごにょするのが[Ownership]
メモリ管理
[/ memory management][主記憶管理][主記憶装置]上での[主記憶領域]の管理の方法参考[/mrsekut-book-477419607X/104 (第5章 メモリ管理)]
ガベージコレクション本
ヒープ領域
[/ heap]動的なメモリ領域実行時のメモリ確保に使う任意のタイミングで割り当てできる確保、解放は手動でやるか、[GC]を使うか
リージョン
[/ region][GC]と異なり、静的に[メモリ管理]をすることができるGCに比べて早期にオブジェクトの解放ができる[参照カウントGC]などに比べれ実行時オーバーヘッドが小さいメモリの[ヒープ領域]をリージョンという抽象化された領域に分割する
Concurrent Mark Sweep GC
並行マークスイープ三色マーキング([三色抽象化(tricolour abstraction)]とおなじか?)マーキング中に新しいオブジェクトが作られることへの対策マークされたオブジェクト(黒), マークスタック(灰),残りのオブジェクト(白)手順
NimのGC
[Nim]の[GC]ARCとORChttps://qiita.com/dumblepy/items/be660c17556d73aa3570
Mark Compact GC
概要マークフェーズとコンパクションフェーズからなるマークフェーズはMarkSweepGCのものと全く同じコンパクションフェーズでは生きているオブジェクトの詰め直し(コンパクション)を行うヘッダに格納するもの
Copying GC
コピーGCある領域上の生きていているオブジェクトだけをすべて別の領域にコピーし、元の領域のものはすべて破棄するヒープ全体を同じサイズのfrom空間とTo空間に分ける↑この「わけること」を[半空間アルゴリズム](semi-space algorithm)というらしい[深さ優先探索]が行われる
正確なGC
[/ Exact GC]ポインタと非ポインタを正しく識別できる[GC]
保守的GC
[/ Conservative GC]ポインタと非ポインタを識別できない[GC]コールスタックに積まれたコールフレームにはポインタや非ポインタが入っているが、GCから見ると単なるビット列にしか見えないので判別できない不明瞭なルート内の全ての値は潜在的にポインタの可能性がある、という風に見えているある程度の精度でポインタを識別する必要がある
Simula
[/ Simulation Language]名前の通りシミュレーション向けの言語として開発され、後に汎用言語となった[Ole Johan Dahl], [Kristen Nygaard]が[ALGOL 60]の拡張をする形で開発を始めた1967年[OOP]の起源
PyPy
実行時スタック
[/ runtime stack][局所変数]を記憶するために使うメモリ領域自動で[メモリ管理]を行う[GC]よりも提供範囲は狭いが、オーバーヘッドも小さくて済む個々の[スレッド]が個々に実行時スタックを持つ
tri-color GC
incremental-tri-color-marking GC
[Incremental GC]と[tri-color GC]と[Mark Sweep GC]のハイブリッド #??https://github.com/AssemblyScript/assemblyscript/pull/196↑ここに出てきた
Go
構造的部分型
[/ structural subtyping]型の構造だけを見て、[派生型 (derived type)]かどうかを判定する[公称的部分型]のように明示的に`class A implements B{}`のように書かなくても、構造が同じであれば派生型だと判定される静的にチェックできる[ダックタイピング]>#WIP
goroutine
from [Go][『Go言語による並行処理』]を読もう[mrsekut.icon]`go Hoge() // 既存の関数をgoroutineを作って呼び出し``go func() { // 無名関数をその場で作って呼び出し``//`
進捗大陸
https://shinchokutairiku.booth.pm/[『進捗大陸 01』][『進捗大陸 02』][進捗大陸 3]Raspberry PiのGPUを使う
『効率的なGo』
fp-go
プログラミング言語の歴史
Russ Cox
WebAssembly
PEG
https://engineering.linecorp.com/ja/blog/peg-parser-generator-packrat-parser/Parsing Expression Grammar字句解析付きの[コンパイラコンパイラ][形式文法]の一種PEGに曖昧さは存在しない
Rob Pike
Kenneth Lane Thompson
2006-01-02 15:04:05
[Go]の日付書式他の言語では、[yyyy/MM/dd hh:mm:ss]のように書くやつが、Goでは、`"2006-01-02 15:04:05"`と書くらしい↑この`2006`とかの数字はこれじゃないといけないhttps://ytyaru.hatenablog.com/entry/2022/10/31/000000
Goの命名規則
[Go]の[命名規則]structのfield名も短いんだねhttps://zenn.dev/keitakn/articles/go-naming-ruleshttps://micnncim.com/posts/ja/go-naming-conventionhttp://blog.sigbus.info/2014/09/go.html
Gopherくん
Podcast
[NVIDIA]の[https://podcasts.apple.com/jp/podcast/the-ai-podcast/id1186480811 The AI Podcast][https://podcasts.apple.com/jp/podcast/go-time/id1120964487 Go Time][Go]とかの話[https://podcasts.apple.com/jp/podcast/talk-python-to-me-python-conversations-for-passionate/id979020229 Talk Python To Me - Python conversations for passionate developers]
Goの言語のデザイン
[Go]の[プログラミング言語のデザイン]https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html[Rob Pike]が書いたGoの設計思想についてhttps://golang.design/history/めっちゃまとまっていてすごい[mrsekut.icon*2]
誰かの自作言語
mattan氏のankohttps://github.com/mattn/anko[Go]っぽいインタプリタ言語[Mud][https://github.com/0918nobita/psyche psyche]
walrus operator
Mark Sweep GC
日本語では「印掃式ゴミ集め」とかって言うらしいスライド[Mark Sweep GCについて]概要世界初のGC
WebAssemblyをサポートする言語
[WebAssembly]をサポートする言語どっかの記事に「すでに30言語ぐらいある」って書いてたな[mrsekut.icon][LLVM]で実装された言語は基本いける、それ以外の言語はそれ用の処理系が開発されればいけるという認識でいいのかな?[mrsekut.icon]大きく分けると2種類ある [ref https://qiita.com/chikoski/items/47ca7bbfe5bfb5fe0f66#%E9%96%8B%E7%99%BA%E3%81%AB%E4%BD%BF%E3%81%88%E3%82%8B%E8%A8%80%E8%AA%9E]
Vendoring
依存先のライブラリをリポジトリに取り込むことメリット依存先のライブラリが急に削除された場合でもすでにローカルに持ってれば耐えるデメリットそのリポジトリが大きくなる
OpenCV
画像処理するやつGoCV[Go] verhttps://techblog.zozo.com/entry/imageproc_golang
Created
7 years ago
by
mrsekut
Updated
7 years ago
by
mrsekut
Views: 31
Page rank: 5.4
Copy link
Copy readable link
Start presentation
Hide dots
GoのGC
from
GC
概要
ストップ・ザ・ワールドによる停止時間を減らすことを最優先に常に改良されている
Go 1.10
Concurrent Mark & Sweep GC
コンパクションや世代別GCは行わない
ライトバリアのオーバーヘッドが許容できないから
参考
Go 1.5
tri-color GC
goのメモリアロケートについて
https://blog.learngoprogramming.com/a-visual-guide-to-golang-memory-allocator-from-ground-up-e132258453ed
https://christina04.hatenablog.com/entry/why-golang-is-good
https://deeeet.com/writing/2016/05/08/gogc-2016/
https://deeeet.com/writing/2016/06/29/toc/
https://postd.cc/golangs-real-time-gc-in-theory-and-practice/
https://blog.golang.org/ismmkeynote
https://deeeet.com/writing/2016/05/08/gogc-2016/
参考
Goシス本
Go GC - LINE ENGINEERING
#Go