這兩天收集了一些基礎知識, 記錄下java
一般使用 內存對齊方式 (8 字節、16 字節、32 字節),linux
有的值可能只佔用兩個字節,可是爲何還要一次性分配8字節呢.golang
緣由是爲了內存的可複用性, 產生更少的內存碎片.算法
new(9) 大於8, 將會使用16字節內存。bash
可是仔細想一想, 8字節 16字節等等過於零散,能夠再對內存進行歸類組織, 就使用到了 頁 的概念。性能
每一個對象擁有一個ref屬性,標記引用的次數。ui
有可能形成循環引用,內存沒法釋放spa
增一減一 各類環境下要求準確記錄, 若是出現不正確計數, 將會引起嚴重問題操作系統
速度快線程
單獨gc算法按期掃描引用鏈表,進行釋放
最典型爲三色標記法(golang)
根據對象的生命週期, 標記爲 0 1 2 三級代領, 具體參考 java、C#
操做系統分配存儲資源的最小單元
程序執行時的最小單位,它是進程的一個執行流,是CPU調度和分派的基本單位(因此一個進程最少一個線程)
在用戶空間實現多任務的調度而多任務調度是發生在一個線程上的,咱們把這種機制稱之爲協程, 由於在一個線程上,協程的本質是串行的。
cpu進程的切換最消耗性能了, 由於整個進程都得保存現場或者恢復現場
線程的切換由於同進程內共享地址空間, 切換相比進程開銷要小得多
軟件崩潰後會產生core文件, 默認linux沒有開啓
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 32768
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1418
virtual memory (kbytes, -v) unlimited
複製代碼
開啓命令:
ulimit -c unlimited #unlimited表示不限制大小
複製代碼
若是想要永久生效,能夠「ulimit -c unlimited」這一行加到 /etc/profile 文件中去,放到這個文件最後一行便可。