根据我对Java程序员的了解:
为每个线程分配其堆栈(对于Java,每个线程的默认堆栈大小为1M)。从线程调用的每个方法都具有一个堆栈框架(只是线程堆栈内存的连续部分),线程堆栈仅具有堆栈框架。我的猜测是,一个进程还提供了一定的堆栈(以便该进程的每个线程都获得其堆栈的一部分)。
进程是否具有自己的堆栈,或者它进一步将某些堆栈(该堆栈的一部分)提供给线程?
P.S。当我想到转义分析时,出现了一个问题:我了解到,如果一个对象(引用)从未转义一个方法-它在 stack (不是堆)上,如果引用确实转义了单个方法,但仅在一个线程内使用(=永远不会逸出其run()
方法)-它也在 stack 上。
This意味着一个进程对其“堆栈”的大小没有限制,但是我可以从一个进程创建多少个线程(分叉/克隆)(通常是多少?)有一个限制,并且存在最小线程堆栈大小。因此,我想进程的堆栈本身并没有分配,并且是“无限的”(100%取决于线程堆栈的分配)。