在本机 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...相关推荐

  1. 栈空间_Linux中的进程栈和线程栈

    1. 进程栈 进程栈是属于用户态栈,和进程虚拟地址空间 (Virtual Address Space) 密切相关.那我们先了解下什么是虚拟地址空间:在 32 位机器下,虚拟地址空间大小为 4G.这些虚 ...

  2. 【Linux系统编程】线程栈大小

    00. 目录 文章目录 00. 目录 01. 概述 02. 设置线程栈函数 03. 附录 01. 概述 先来讲说线程内存相关的东西,主要有下面几条: 进程中的所有的线程共享相同的地址空间. 任何声明为 ...

  3. [笔记]Windows核心编程《十六》线程栈

    系列文章目录 [笔记]Windows核心编程<一>错误处理.字符编码 [笔记]Windows核心编程<二>内核对象 [笔记]Windows核心编程<三>进程 [笔记 ...

  4. 【Java 虚拟机原理】线程栈 | 栈帧 | 局部变量表 | 反汇编字节码文件 | Java 虚拟机指令手册 | 程序计数器

    文章目录 一.线程栈 二.栈帧 三.栈帧 - 局部变量表 四.反汇编字节码文件 五.Java 虚拟机指令手册 六.程序计数器 一.线程栈 装载 HelloWorld.class 字节码文件到 Java ...

  5. java线程卡住排查_基于 Java 线程栈 排查问题

    除日志外,还有没有别的方式跟踪线上服务问题呢?或者,跟踪并排除日志里无法发现的问题? 方法当然是有的,就是通过现场快照定位并发现问题.我们所说的现场,主要指这两方面: Java 线程栈.线程栈是Jav ...

  6. 【Linux系统编程】线程堆栈大小的使用介绍

    先来讲说线程内存相关的东西,主要有下面几条: 进程中的所有的线程共享相同的地址空间. 任何声明为 static/extern 的变量或者堆变量可以被进程内所有的线程读写. 一个线程真正拥有的唯一私有储 ...

  7. Linux下多线程编程---02(线程退出与线程资源的回收)

    线程退出的三种情况:第一种是进程结束,进程中所有的线程也会随之结束.第二种是通过函数 pthread_exit 来主动的退出线程.第三种被其他线程调用 pthread_cancel 来被动退出. 当线 ...

  8. 线程堆栈大小 pthread_attr_setstacksize 的使用

    pthread_create 创建线程时,若不指定分配堆栈大小,系统会分配默认值,查看默认值方法如下: # ulimit -s 8192 # 上述表示为8M:单位为KB. 也可以通过# ulimit ...

  9. 【Java 并发编程】线程简介 ( 进程与线程 | 并发概念 | 线程间通信 | Java 并发 3 特性 )

    文章目录 一.进程与线程 二.并发 三.线程间通信 四.Java 并发 3 特性 一.进程与线程 最开始是没有线程这个概念的 , 一个应用程序就是一个进程 , 应用程序运行时 , 如果还要处理与用户交 ...

最新文章

  1. 读书笔记:《Aspx开发200问》——如何实现Repeater控件的分页
  2. Android友盟增量更新
  3. 微信小程序注意点及快捷键
  4. dubbo+zookeeper+dubbo管理控制台实践demo
  5. 02-Unity深入浅出(二)
  6. 怎么用python处理数据_Python数据清洗 - 洗什么?怎么洗?看完就明白了
  7. 前端学习(2444):分支的使用
  8. 训练日志 2019.1.10
  9. [原]正则表达式模式匹配入门
  10. Netty短时间内大量写消息导致的内存问题
  11. Code::Blocks IDE - Open Source, Cross-platform Free C++ IDE
  12. SLAM--线性化求解估计位姿
  13. 基于QT实现的数独游戏DPLL的SAT求解器设计
  14. [Android-ARCore开发]ARCore从入门到放弃1-Demo上手
  15. 华创e路航固件_华创e路航地图
  16. MacDonalds 翻译成“麦当劳”为什么好?英语翻译技巧E
  17. tp房产源码tpfangchan-fangcms-tphouse火车头采集软件方法
  18. 网易云音乐外链对比制作
  19. 基于WIFI-Pumpkin的流氓AP的实现
  20. Veritas NetBackup8.1.1客户端安装

热门文章

  1. Linux文本处理及用户组管理命令练习
  2. CUDA安装及配置:Windows 7 64位环境
  3. memset函数源码实现
  4. 修改eclipse启动时eclipse使用的jre
  5. yocto中文环境搭建
  6. 入门视频采集与处理(学会分析YUV数据)
  7. Google开源库Image Captioning部署记录
  8. Hadoop系列五:Hadoop之Zookeeper篇
  9. ubuntu15.10安装wireshark
  10. 虚拟光驱安装服务器无法运行,windows7虚拟光驱无法正常打开怎么办