Ai đó có thể cho tôi biết dung lượng ngăn xếp trong C#.Dung lượng ngăn xếp trong C#
Tôi đang cố gắng tạo một đối tượng đóng lưới 3D bằng cách sử dụng một mảng 30.000 mục.
Ai đó có thể cho tôi biết dung lượng ngăn xếp trong C#.Dung lượng ngăn xếp trong C#
Tôi đang cố gắng tạo một đối tượng đóng lưới 3D bằng cách sử dụng một mảng 30.000 mục.
Kích thước ngăn xếp mặc định cho ứng dụng .NET là 1 MB (mặc định là 256 KB cho ứng dụng ASP.NET 32 bit và 512 KB cho ứng dụng ASP.NET 64 bit), nhưng bạn có thể thay đổi điều đó. Đối với ứng dụng, bạn có thể thay đổi kích thước mặc định bằng cách sửa đổi tiêu đề PE của tệp thực thi. Đối với các chủ đề bạn tạo, bạn có thể sử dụng quá tải hàm tạo có kích thước ngăn xếp. Tuy nhiên, như Anton Tyjhyy chỉ ra trong câu trả lời của mình, mảng là các kiểu tham chiếu và do đó nằm trên heap (ngay cả khi mảng xảy ra để chứa một loạt các kiểu giá trị).
Kích thước 256 KB cho các ứng dụng ASP.Net dành cho các ứng dụng 32 bit. Trên Windows Server 2008 64 bit trở lên, kích thước ngăn xếp đã được đẩy lên tới 512 KB. Xem KB 932909 để biết thêm chi tiết. – Dono
@Dono Cảm ơn bạn đã thông tin. Tôi sẽ cập nhật. –
@BrianRasmussen Bạn thực sự có thể phân bổ một mảng trên ngăn xếp bằng cách sử dụng 'stackalloc'. Ngoài ra, chỉ vì một cái gì đó là một kiểu tham chiếu không nhất thiết có nghĩa là nó sẽ được cấp phát trên stack hoặc đống, nó thay đổi bằng cách thực hiện CLR và trong thực thi .NET nó thay đổi trong một vài trường hợp đặc biệt (kích thước của kiểu và phạm vi). –
Kích thước ngăn xếp có thể định cấu hình và can be set in several different ways.
Mảng của bạn sẽ tồn tại trên heap, kích thước ngăn xếp không liên quan trong trường hợp của bạn.
Không nếu bạn khai báo nó với stackalloc ... – Nuzzolilo
Để sử dụng ngăn xếp để lưu trữ mảng, bạn phải sử dụng mã không an toàn với con trỏ và ngăn xếp để phân bổ không gian bộ nhớ mong muốn trên ngăn xếp.
Nếu bạn muốn kiểm tra giá trị cho bản lắp ráp .Net hiện tại của mình thì bạn có thể thực hiện bằng cách sử dụng lệnh ILDASM
đi kèm với dấu nhắc lệnh Visual Studio. Một khi bạn đã bắt đầu công cụ, mở lắp ráp của bạn và sau đó đi đến trình đơn View -> Headers
. Bây giờ, cuộn xuống phần PE Optional Header (32 bit)
trong cửa sổ Headers
mới mở. Bạn sẽ thấy hai trường:
Không gian nói được dành riêng trong paging file của hệ điều hành để chồng luôn có thể được hoán đổi khi cần thiết .
Bạn có thể chỉ kiểm tra nó cho mình bằng cách đặt hàng nghìn tỷ mục vào nó và xem khi nào nó bị treo? – Smashery
Một câu hỏi liên quan chặt chẽ là [Kích thước ngăn xếp dưới Mono] (http://stackoverflow.com/questions/19817790/stack-size-under-mono). – Palec