Process
2016-09-23 16:29:26 0 举报
erlang process——进程结构
作者其他创作
大纲/内容
Uint mbuf_sz(message buffers的size)
Eterm *old_heap
Uint16 gen_gcs((minor)分代GCs数?)
Unit flags(Trap exit,etc(no trace flags anymore???))
Eterm fvalue(Exit和Throw值——记录failure reason)
Uint64 bin_vheap_sz
ErtsPTabElementCommon common
Eterm seq_trace_token(Sequential trace token)
Unit min_heap_size
Eterm* hend(heap end)
ERTS_SMP、HIPE、CHECK_FOR_HOLES、DEBUG、FORCE_HEAP_FRAGS等情况的数据
Unit reds(当前进程分配的reductions数?)
Uint64 bin_old_vheap_sz
Sint catches(栈上的catches数)
Unit32 rcount(suspend count?)
BeamInstr initial[3](记录初始的module、function、arity信息)
erts_smp_atomic32_t state
ErlMessageQueue msg
int schedule_count(重新调度一个低优先级进程的剩余时间)
ErlOffHeap off_heap(off-heap data updated by copy_struct())
???
Uint64 bin_vheap_mature
struct ErtsNodesMonitor_ *nodes_monitors
Eterm group_leader
描述:Process/Port table implementation(Note:必须放在struct的第一部分)
ProcDict *dictory(进程字典)
void *terminate
Eterm def_arg_reg[6](默认的参数寄存器数组)
Eterm *old_hend(堆指针——用来进行分代GC)
Eterm* htop(heap top)
BeamInstr* i(threaded code程序计数器)
Unit min_vheap_size
BeamInstr* current(当前的Erlang函数信息:Module、function、arity)
ErtsSuspendMonitor *suspend_monitor
Sint fcalls(剩余的可执行的reductions数——只对当前进程有效)
Eterm *old_htop
erts_approx_time_t approx_started(记录进程start时间???)
unsigned max_arg_reg(参数寄存器的最大使用个数)
union:u
Eterm parent(创建该进程的Pid——父进程)
Process *next
参考图形
Unit heap_sz
Uint seq_trace_lastcnt
Eterm *high_water
GCs
ErtsPSD *psd(极少用到的process specific data)
Uint seq_trace_clock
Uint64 bin_old_vheap
ErtsBifTimer *bif_timers
Unit arity(live的参数寄存器个数——当进程not running的时候有效)
Eterm* heap(heap start)
BeamInstr* cp(返回地址指针——Continuation pointer(for threaded code))
Eterm* stop(stack top)
Eterm ftrace
erl crash dump会用到该信息
Unit freason
ErtsProcSysTaskQs *sys_task_qs
ErlHeapFragment* mbuf(消息缓存列表指针——message buffer list)
Eterm* arg_reg(指向参数寄存器)
process
当进程的存储区域发生变化或者需要进行GC时的情况下用到这部分
Unit16 max_gen_gcs(在fullsweep之前可进行的最大minor分代GCs次数)
0 条评论
下一页