android线程栈默认大小,线程的默认最大堆栈大小 - Internet Information Services | Microsoft Docs...
在本機 IIS 進程中創建線程的默認最大堆棧大小為 256 KB
12/29/2020
本文內容
本文介紹由本機 IIS 進程創建的線程的默認最大堆棧Microsoft Internet Information Services (IIS) 大小。
原始產品版本: ? Internet Information Services 8.0
原始 KB 編號: ? 932909
摘要
默認情況下,在 Windows Server 2008 之前,由本機 IIS 進程創建的線程的最大堆棧大小為 256 KB。 例如,當 Inetinfo.exe、DLLHost.exe 或 W3wp.exe 在 IIS 5.0 或 IIS 6.0 中創建線程時,線程的最大堆棧大小默認為 256 KB。 還可以顯式調用 CreateThread 函數以指定線程的堆棧大小。 在 Microsoft Windows 2000 中,如果 Microsoft ASP.NET 工作進程 (ASPNet_wp.exe) 創建線程,則線程的最大堆棧大小為 1 MB。 在 Windows Server 2008 及更高版本中,在 32 位版本 IIS 上運行的線程的最大堆棧大小為 256 KB,在 x64 服務器上運行的線程的最大堆棧大小為 512 KB。
備注
Internet Information Services是一個多線程 Web 應用程序平臺,它允許在每個工作進程內運行的應用程序代碼在必要時一次利用數百個或多個線程。 每個線程都受相同堆棧大小限制的限制,以便讓進程的虛擬內存使用量保持在可管理的限制內。
更多信息
線程的最大堆棧大小不是由進程內運行的單個 ISAPI、DLL 或 ASP 組件決定的。 線程的最大堆棧大小由進程的可執行文件配置。 如果必須具有較大的堆棧大小,可以編程方式創建一個線程,然后設置適當的堆棧大小。 或者,如果線程的堆棧大小超過最大值,則必須更改應用程序中的代碼以正確使用堆棧。
函數的參數和本地變量存儲在線程堆棧中。 如果聲明具有較大值的局部變量,堆棧很快就會耗盡。 例如,以下代碼示例中的函數需要堆棧中的 400,000 個字節來存儲數組。
void func(void)
{
int i[100000];
// Use 100,000 integers multiplied by 4 bytes per integer to store the array.
return;
}
備注
不能在 IIS 4.0、IIS 5.0、IIS 5.1 或 IIS 6.0 中調用此函數。
若要避免使用堆棧,請動態分配內存。 例如,以下代碼示例中的函數動態分配內存。
void func(void)
{
int *i
i = new int[100000];
// More code goes here.
return;
}
備注
在此代碼示例中,內存存儲在堆棧而不是堆棧中。 因此,該函數不需要堆棧中 400,000 個字節來存儲數組。
如果以遞歸方式調用函數,則堆棧可能很快就會耗盡。 例如,如果滿足以下條件,則函數需要堆棧中的 400,000 個字節:
該函數需要 40 個字節作為本地變量。
該函數以遞歸方式調用 10,000 次。
在 CGI 應用程序 (網關接口) ,線程的最大堆棧大小不是 256 KB。 啟動 CGI 應用程序時,將創建一個新進程,并且 CGI 可執行文件將配置堆棧大小。 還可以顯式調用 CreateThread 函數以指定線程的堆棧大小。
有關詳細信息,請參閱 線程堆棧大小。
總結
以上是生活随笔為你收集整理的android线程栈默认大小,线程的默认最大堆栈大小 - Internet Information Services | Microsoft Docs...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android edittext 光标监
- 下一篇: android studio撤销按钮,A