public static void Main()
{
int size = 250000;
var a = new int[size];
for (int i = 0; i < size; i++)
Console.WriteLine("{0}", a[i]);
}
जब मैंने CLRProfiler के साथ उपरोक्त कोड का परीक्षण किया, तो उसने मुझे बताया कि कोड लगभग 40 एमबी आवंटित करता है। लगभग 20 एमबी String
, 9 एमबी से Char[]
, 5 एमबी से StringBuilder
और 3 एमबी से Int32
को आवंटित किया गया है।Console.WriteLine()
public static void Main()
{
int size = 250000;
var a = new int[size];
for (int i = 0; i < size; i++)
Console.WriteLine("0");
}
यह लगभग 5 एमबी आवंटित करता है। 4 एमबी Char[]
को आवंटित किया गया है।
मुझे केवल एक चीज है कि सरणी a
को 1 एमबी (250,000 * 4) की आवश्यकता होनी चाहिए।
इतना बड़ा अंतर क्यों है? उन सभी ऑब्जेक्ट्स को पहले कोड के लिए क्यों आवश्यक है और मैं स्मृति आवंटन को कैसे कम करूं?
और शायद निरंतर स्ट्रिंग "0" को प्रशिक्षित किया गया है, इसलिए इसमें केवल एक उदाहरण मौजूद है। –