Theo mặc định, kích thước tối đa ngăn xếp một chủ đề được tạo ra trong quá trình IIS riêng là 256 KB

Áp dụng cho: Internet Information Services 8.0

Tóm tắt


Theo mặc định, kích thước tối đa ngăn xếp một chủ đề được tạo bởi trình Microsoft Internet Information Services (IIS) riêng là 256 KB trước khi Windows Server 2008. Ví dụ: khi Inetinfo.exe, DLLHost.exe hoặc W3wp.exe tạo một chủ đề trong IIS 5.0 hoặc IIS 6.0, kích thước tối đa ngăn xếp chuỗi là 256 KB theo mặc định. Cũng rõ ràng gọi hàm CreateThread để xác định kích thước xếp chồng của các chủ đề. Trong Microsoft Windows 2000, nếu quá trình Microsoft ASP.NET Worker (ASPNet_wp.exe) tạo ra một chủ đề, kích thước tối đa ngăn xếp chuỗi là 1 MB. Trong Windows Server 2008 lên, kích thước tối đa ngăn xếp một luồng chạy phiên bản 32-bit của IIS là 256 KB và x64 một máy chủ là 512 KB.

Lưu ý: Dịch vụ thông tin Internet là một nền tảng ứng dụng web đa luồng cho phép ứng dụng mã chạy trong mỗi tiến trình riêng biệt để sử dụng hàng trăm hoặc thêm luồng ngay khi cần thiết. Mỗi chủ đề là ràng buộc bởi giới hạn kích thước xếp chồng cùng để sử dụng bộ nhớ ảo của quá trình quản lý hạn.

Thông tin


Kích thước tối đa ngăn xếp một luồng không được xác định một cá nhân ISAPI, DLL hoặc ASP thành phần đang trong quá trình. Kích thước tối đa ngăn xếp một chủ đề được cấu hình tệp thi hành trình. Nếu bạn phải có kích thước lớn xếp chồng, bạn có thể lập trình tạo một chủ đề và sau đó đặt kích thước phù hợp với ngăn xếp. Ngoài ra, nếu các chủ đề hết kích thước tối đa ngăn xếp, bạn phải thay đổi mã trong ứng dụng sử dụng các chính xác.

Các đối số và các biến cục bộ của một chức năng được lưu trữ trong ngăn xếp chuỗi. Nếu bạn khai báo một biến cục bộ có giá trị lớn, ngăn xếp nhanh chóng sử dụng hết. Ví dụ: hàm trong ví dụ mã sau yêu cầu 400.000 byte trong ngăn xếp để lưu trữ mảng.
void func(void)   {
int i[100000];
// Use 100,000 integers multiplied by 4 bytes per integer to store the array.
return;
}

Lưu ý Bạn không thể gọi chức năng này trong IIS 4.0, IIS 5.0, trong IIS 5.1 hoặc trong IIS 6.0.

Để tránh sử dụng các, tự động phân bổ bộ nhớ. Ví dụ: hàm trong ví dụ mã sau tự động phân bổ bộ nhớ.
void func(void)   {
int *i

i = new int[100000];
// More code goes here.
return;
}

Lưu ý Trong ví dụ mã này, bộ nhớ được lưu trữ trong đống thay vì ngăn xếp. Do đó, chức năng yêu cầu 400.000 byte trong ngăn xếp để lưu trữ mảng.

Nếu một chức năng được gọi là đệ quy, chồng có thể được nhanh chóng cạn kiệt. Ví dụ: một chức năng yêu cầu 400.000 byte trong ngăn xếp nếu các điều kiện sau là đúng:
  • Chức năng yêu cầu 40 byte cho một biến địa phương.
  • Chức năng là gọi là 10.000 lần đệ quy.
Ứng dụng giao diện cổng chung (CGI), một luồng không có kích thước tối đa ngăn xếp 256 KB. Khi bạn khởi động ứng dụng CGI, trình mới được tạo và cấu hình tệp thi hành CGI kích thước xếp chồng. Cũng rõ ràng gọi hàm CreateThread để xác định kích thước xếp chồng của các chủ đề.

Để biết thêm thông tin, hãy truy cập vào Web site MSDN sau: