雑なメモ書き

気楽にいきます

2019-02-01から1ヶ月間の記事一覧

Goのmemstatsの項目をみてみる

https://golang.org/pkg/runtime/#MemStats MemStatsから取得出来る各項目を一覧してみた 細かいコメント等は本家を参照すること 項目名 説明 Alloc 割り当てられたヒープオブジェクトのバイト数 TotalAlloc ヒープオブジェクトに割り当てられた累積バイト数…

appengineでmemstatsしたかった

appengineのバージョンが古いとデータが取れなかったりするので こちらのコードから必要そうな処理をお借りしました https://github.com/google/gops package hello import ( "encoding/json" "fmt" "net/http" "runtime" "time" "google.golang.org/appengi…

GoのメモリにおけるHeapの確認 (2)

appendでsliceのサイズをいじった場合にどうなるかをみた heapへのescapeはあくまで関数間でデータの受け渡しを参照で行った場合に起きるようだ sliceへappendしてポインタを返した場合 package main func makeHeap() *[]int { v := []int{} for i := 0; i <…

GoのメモリにおけるHeapの確認 (1)

コード 単純にポインタを返すからheapかと言われると インライン展開で最適化されてそうじゃなくなるケースがあるようだ package main func makeHeap() *[]int { v := []int{} return &v } func main() { for i := 0; i < 1000; i++ { _ = makeHeap() } } イ…

子プロセスからpipe経由でデータが欲しかった

https://linuxjm.osdn.jp/html/LDP_man-pages/man2/pipe.2.html https://linuxjm.osdn.jp/html/LDP_man-pages/man2/fork.2.html 大量に同一pipeへデータを一括で書き込もうかと思ったのでとりあえず子プロセスから頑張ってみた。 #include <unistd.h> #include <stdlib.h> #inclu</stdlib.h></unistd.h>…

GoのGCに関して調べてみた

基本的なところ GoのGC Concurrent Mark & Sweepを採用している goroutine はGCされない https://www.yunabe.jp/docs/golang_pitfall.html#goroutine-%E3%81%AFgc%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84 goroutine はガーベッジコレクションの対象ではありま…

go-mysqlの接続あたりをみてみる(1)

https://golang.org/pkg/database/sql/ https://linuxjm.osdn.jp/html/tcpdump/man1/tcpdump.1.html https://qiita.com/keikmobile/items/93cf6dc5b95019c6a442 https://prev.net-newbie.com/tcpip/tcp/tcpdump.html https://www.atmarkit.co.jp/ait/article…

file descriptorの現在位置とdupなど適当にみた

https://linuxjm.osdn.jp/html/LDP_man-pages/man2/open.2.html https://linuxjm.osdn.jp/html/LDP_man-pages/man2/read.2.html https://linuxjm.osdn.jp/html/LDP_man-pages/man2/lseek.2.html https://stackoverflow.com/questions/3399236/ftell-on-a-fil…

go-fmtはバージョンによって微妙に差がある

golang.org goにはgfmtというコマンドがいて、これを使用すると特定のフォーマットを強制出来るのですが、どうもバージョンアップごとに強制されるフォーマットが微妙に違う用です。 golang.org Note that these kinds of minor updates to gofmt are expect…

pipe経由でreadは読み出し可能になるまで停止する

linuxjm.osdn.jp 読んでいたら、blockしてくれるぽいこと書いてあったので確認 プロセスが空のパイプから読み出しを行おうとした場合、 read(2) はデータが読み出し可能になるまで停止する。 #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/wait.h> i</sys/wait.h></sys/types.h></string.h></stdio.h></stdlib.h></unistd.h>…

お手軽にたちあがるLinuxコンテナが欲しかった

Linux環境で実験したいことがあって、お手軽に立ち上がる環境を作った。 FROM ubuntu:18.04 RUN apt-get update -y && apt-get install -y \ git \ strace \ zsh \ vim \ curl \ gdb \ wget \ build-essential RUN curl -fLo ~/.vim/autoload/plug.vim --cre…

Goのレビューを楽にするために使えそうなツールメモ

最近だとこの辺の静的解析が話題になりましたが https://www.slideshare.net/takuyaueda967/ss-86437682 https://tech.mercari.com/entry/2018/12/16/150000 とりあえず、何があるか確認してみる ツールで出来そうなことはツールでよしなにしたい その他 htt…