static void Main() {
Random ran = new Random();
Console.Write(ran.Next(1, 7) + " ");
Console.WriteLine(ran.Next(1, 7));
}
}
При выполнении этой программы три раза подряд могут быть получены, например, следующие результаты.
5 2
4 4
1 6
Сначала в этой программе создается объект класса Random. А затем в ней запрашиваются два случайных значения в пределах от 1 до 6.
<p>Управление памятью и класс GC</p>В классе GC инкапсулируются средства "сборки мусора". Методы, определенные в этом классе, перечислены в табл. 21.15.
Таблица 21.15. Методы, определенные в классе GC
Метод - Назначение
public static voidAddMemoryPressure(longbytesAllocated) - Задает в качестве параметра bytes Allocated количество байтов, распределенных в неуправляемой области памяти
public static void CancelFullGCNotification() - Отменяет уведомление о “сборке мусора”
public static void Collect() public static void Collect(intgeneration) - Инициализирует процесс “сборки мусора”
public static void Collect (intgeneration,GCCollectionModemode) - Инициализирует процесс “сборки мусора” в областях памяти с номерами поколений от 0 до generation
public static int CollectionCount (intgeneration) - Инициализирует процесс “сборки мусора” в областях памяти с номерами поколений от 0 до generation в'режиме, определяемом параметром mode
public static int GetGeneration (objectobj) - Возвращает количество операций “сборки мусора”, выполненных в области памяти с номером поколения generation Возвращает номером поколения для области памяти, доступной по ссылке obj
public static int GetGeneration(WeakReferencewo) - Возвращает номер поколения для области памяти, доступной по “слабой" ссылке, задаваемой параметром wo. Наличие “слабой" ссылки не защищает объект от “сборки мусора”
public static long GetTotalMemory(bool forceFullCollection) - Возвращает общий объем памяти (в байтах), выделенной на данный момент. Если параметр forceFullCollection имеет логическое значение true, то сначала выполняется “сборка мусора”
public static void KeepAlive(objectobj) Создает ссылку на объект obj, защищая его от “сборки мусора”. Действие этой ссылки оканчивается после выполнения метода KeepAlive()
public static void RegisterForFullGCNotification(intmaxGenerationThreshold,int largeObjectHeapThreshold) - Разрешает уведомление о “сборке мусора”. Значение параметра maxGenerationThreshold обозначает количество объектов второго поколения в обычной “куче", которые будут инициировать уведомление. А значение параметра largeObjectHeapThreshold обозначает количество объектов в крупной “куче", которые будут инициировать уведомление. Оба значения должны быть указаны в пределах от 1 до 99
public static void RemoveMemoryPressure(long bytesAllocated) - Задает в качестве параметра bytesAllocated количество байтов, освобождаемых в неуправляемой области памяти
public static void ReRegisterForFinalize(object obj) - Вызывает деструктор для объекта obj. Этот метод аннулирует действие метода SuppressFinalize()
public static void SuppressFinalize(objectobj) - Препятствует вызову деструктора для объекта obj
public static GCNotificationStatus WaitForFullGCApproach() - Ожидает уведомления о том, что должен произойти полный цикл “сборки мусора”. Здесь GCNotificationStatus — перечисление, определенное в пространстве имен System
public static GCNotificationStatus WaitForFullGCApproach(int millisecondsTimeout) - Ожидает уведомления о том, что долженпроизойти полный цикл “сборки мусора", в течение времени, задаваемого пара метром millisecondsTimeout. Здесь GCNotificationStatus — перечисление, определенное в пространстве имен System