来自线程的进程,线程和方法调用-它们与堆栈的关系

时间:2018-12-23 15:15:02

标签: java c multithreading operating-system java-threads

根据我对Java程序员的了解:

为每个线程分配其堆栈(对于Java,每个线程的默认堆栈大小为1M)。从线程调用的每个方法都具有一个堆栈框架(只是线程堆栈内存的连续部分),线程堆栈仅具有堆栈框架。我的猜测是,一个进程还提供了一定的堆栈(以便该进程的每个线程都获得其堆栈的一部分)。

进程是否具有自己的堆栈,或者它进一步将某些堆栈(该堆栈的一部分)提供给线程?

P.S。当我想到转义分析时,出现了一个问题:我了解到,如果一个对象(引用)从未转义一个方法-它在 stack (不是堆)上,如果引用确实转义了单个方法,但仅在一个线程内使用(=永远不会逸出其run()方法)-它也在 stack 上。

This意味着一个进程对其“堆栈”的大小没有限制,但是我可以从一个进程创建多少个线程(分叉/克隆)(通常是多少?)有一个限制,并且存在最小线程堆栈大小。因此,我想进程的堆栈本身并没有分配,并且是“无限的”(100%取决于线程堆栈的分配)。

相关:"stack frame" = "call stack"

0 个答案:

没有答案
相关问题