Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / SafeMILHandleMemoryPressure.cs / 1407647 / SafeMILHandleMemoryPressure.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: // Tracks the amount of native memory used by SafeMILHandle objects. //--------------------------------------------------------------------------- using System; using System.Security; using MS.Internal; using System.Threading; namespace System.Windows.Media { internal class SafeMILHandleMemoryPressure { ////// Critical: This code calls into AddMemoryPressure which has a link demand. /// [SecurityCritical] internal SafeMILHandleMemoryPressure(long gcPressure) { _gcPressure = gcPressure; _refCount = 0; if (_gcPressure > SMALL_BITMAP_MEM) { MemoryPressure.Add(_gcPressure); } else { GC.AddMemoryPressure(_gcPressure); } } internal void AddRef() { Interlocked.Increment(ref _refCount); } ////// Critical: This code calls into RemoveMemoryPressure which has a link demand. /// [SecurityCritical] internal void Release() { if (Interlocked.Decrement(ref _refCount) == 0) { if (_gcPressure > SMALL_BITMAP_MEM) { MemoryPressure.Remove(_gcPressure); } else { GC.RemoveMemoryPressure(_gcPressure); } _gcPressure = 0; } } // Estimated size in bytes of the unmanaged memory private long _gcPressure; // // SafeMILHandleMemoryPressure does its own ref counting in managed code, because the // associated memory pressure should be removed when there are no more managed // references to the unmanaged resource. There can still be references to it from // unmanaged code elsewhere, but that should not prevent the memory pressure from being // released. // private int _refCount; // // The memory usage for a "small" bitmap // // Small bitmaps will be handled by GC.AddMemoryPressure() rather than WPF's own // MemoryPressure algorithm. GC's algorithm is less aggressive than WPF's, and will // result in fewer expensive GC.Collect(2) operations. // // For now, a small bitmap is 32x32 or less. It's at 4 bytes per pixel, and the *2 is // to account for the doubled estimate in // BitmapSourceMILSafeHandle.ComputeEstimatedSize(). // private const long SMALL_BITMAP_MEM = 32 * 32 * 4 * 2; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PerformanceCounterManager.cs
- FormatStringEditor.cs
- QuaternionValueSerializer.cs
- AbstractDataSvcMapFileLoader.cs
- DataGridColumnCollectionEditor.cs
- RuntimeHelpers.cs
- AnnotationResource.cs
- MergablePropertyAttribute.cs
- RankException.cs
- MdiWindowListStrip.cs
- DataGridViewCellValidatingEventArgs.cs
- Brushes.cs
- PropertySourceInfo.cs
- Range.cs
- DiagnosticsConfiguration.cs
- FigureHelper.cs
- LinearKeyFrames.cs
- DependencyObject.cs
- FlagsAttribute.cs
- RowUpdatingEventArgs.cs
- SqlTriggerAttribute.cs
- WindowsListViewScroll.cs
- TextBoxRenderer.cs
- XmlNavigatorStack.cs
- CompareValidator.cs
- ApplicationSecurityInfo.cs
- EasingKeyFrames.cs
- COM2ColorConverter.cs
- Focus.cs
- HttpRawResponse.cs
- Enum.cs
- ConfigurationStrings.cs
- GuidTagList.cs
- ObjectMemberMapping.cs
- ChangeDirector.cs
- DisposableCollectionWrapper.cs
- SafeNativeMethods.cs
- WindowsSecurityTokenAuthenticator.cs
- ToolStripMenuItem.cs
- Matrix.cs
- ServiceParser.cs
- ImportContext.cs
- PngBitmapDecoder.cs
- OverrideMode.cs
- HttpModuleAction.cs
- WebConfigurationManager.cs
- ClientScriptManager.cs
- CharConverter.cs
- AddInActivator.cs
- ChtmlCalendarAdapter.cs
- RangeBase.cs
- ViewLoader.cs
- MethodBuilderInstantiation.cs
- Knowncolors.cs
- BrowserDefinition.cs
- DocumentViewerBaseAutomationPeer.cs
- BuildManagerHost.cs
- TextServicesLoader.cs
- CoordinationService.cs
- RenderingEventArgs.cs
- NamedPipeChannelFactory.cs
- RoleService.cs
- X509Utils.cs
- ListDictionary.cs
- DataServiceException.cs
- HtmlTableCell.cs
- UpWmlPageAdapter.cs
- DecimalConverter.cs
- SrgsGrammar.cs
- ManagedWndProcTracker.cs
- DefaultValueMapping.cs
- AccessKeyManager.cs
- SqlDataSourceCommandEventArgs.cs
- XhtmlTextWriter.cs
- SerializationStore.cs
- CompensatableSequenceActivity.cs
- StorageFunctionMapping.cs
- WmpBitmapEncoder.cs
- Brush.cs
- BamlMapTable.cs
- InternalConfigHost.cs
- WebBrowserSiteBase.cs
- VirtualizedItemProviderWrapper.cs
- ExpressionList.cs
- _AuthenticationState.cs
- Endpoint.cs
- HeaderCollection.cs
- EventlogProvider.cs
- ReadOnlyPropertyMetadata.cs
- ReferenceTypeElement.cs
- BaseHashHelper.cs
- EventLogEntryCollection.cs
- DataGridViewColumnHeaderCell.cs
- BaseParser.cs
- ObjectViewQueryResultData.cs
- PnrpPermission.cs
- MethodBuilder.cs
- DeclarativeConditionsCollection.cs
- ToolStripTextBox.cs
- iisPickupDirectory.cs