浪潮GS客户端出现内存溢出和存储空间不足的问题说明和解决方案
近期部分项目反馈GS客户端不定期出现“内存溢出”和“存储空间不足”的问题,该问题出现时往往与特定功能无关,一般是先报出“内存溢出”,点击忽略按钮后,有时紧接着出现“存储空间不足”,整个GS客户端无法继续使用。
经过查阅资料并联系微软确认,是因为windows操作系统在绘图等特定场景下存在内存泄露造成的(WindowsCodecs.dll),存在该问题的操作系统版本有:win7/win8/win8.1/windows server 2008 R2/windows server 2012及R2版本
win7和win8系统,微软有针对此问题的独立补丁(kb2929755)
Download the x86-based Windows 7 update pachage now.
Download the x64-based Windows 7 update pachage now.
Download the x86-based Windows 8 update pachage now.
Download the x64-based Windows 8 update pachage now.
win8.1也存在该问题(kb2919355),请下载更新累计补丁包(没有对应的独立补丁)
Download the x86-based Windows 8.1 update package now.
Download the x64-based Windows 8.1 update package now.
以下是此问题的报错截图和对应的详细堆栈:
异常信息(异常类型:System.OutOfMemoryException)
异常提示:内存溢出异常,请联系管理员处理 异常信息:Out of memory. 导致错误的应用程序或对象的名称:System.Drawing 引发当前异常的方法:Void CheckErrorStatus(Int32) 异常相关帮助: 堆栈信息: at System.Drawing.Graphics.CheckErrorStatus(Int32 status) at System.Drawing.Graphics.DrawImage(Image image, Int32 x, Int32 y) at Genersoft.Platform.AppFramework.AddIns.FunctionTab.FunctionListViewForm.FunctionListViewForm_Paint(Object sender, PaintEventArgs e) at System.Windows.Forms.Control.OnPaint(PaintEventArgs e) at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer) at System.Windows.Forms.Control.WmPaint(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 内部异常:{} |
异常信息(异常类型:System.ComponentModel.Win32Exception) |
异常提示:存储空间不足,无法处理此命令。 |
异常信息:存储空间不足,无法处理此命令。 |
导致错误的应用程序或对象的名称:DevExpress.Utils.v10.2 |
引发当前异常的方法:IntPtr CreateCompatibleDIB(IntPtr, IntPtr, Int32, Int32, IntPtr ByRef) |
异常相关帮助: |
堆栈信息: |
在 DevExpress.Utils.Drawing.XtraBufferedGraphicsContext.CreateCompatibleDIB(IntPtr hdc, IntPtr hpal, Int32 ulWidth, Int32 ulHeight, IntPtr& ppvBits) |
在 DevExpress.Utils.Drawing.XtraBufferedGraphicsContext.CreateBuffer(IntPtr src, Int32 offsetX, Int32 offsetY, Int32 width, Int32 height) |
在 DevExpress.Utils.Drawing.XtraBufferedGraphicsContext.AllocBuffer(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle) |
在 DevExpress.Utils.Drawing.XtraBufferedGraphicsContext.AllocBufferInTempManager(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle) |
在 DevExpress.Utils.Drawing.XtraBufferedGraphicsContext.Allocate(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle) |
在 DevExpress.XtraTabbedMdi.XtraTabbedMdiManager.DrawNC(DXPaintEventArgs e) |
在 DevExpress.XtraTabbedMdi.XtraTabbedMdiManager.DrawNC() |
在 DevExpress.XtraTabbedMdi.XtraTabbedMdiManager.UpdateNCIfNeeded(Object sender, EventArgs e) |
在 System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme) |
在 System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj) |
在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) |
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) |
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) |
在 System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme) |
在 System.Windows.Forms.Control.InvokeMarshaledCallbacks() |
内部异常:{} |
原创文章,转载请注明: 转载自浪潮888博客
本文链接地址: 浪潮GS客户端出现内存溢出和存储空间不足的问题说明和解决方案
文章的脚注信息由WordPress的wp-posturl插件自动生成