想知道是否有人可以对此有所了解.
我有一个具有大内存占用(和内存流失)的应用程序.没有任何内存泄漏,GC往往可以很好地释放资源.
但是,偶尔GC不会“按时”发生,导致内存不足异常.我想知道是否有人可以对此有所了解?
我已经使用了REDGate分析器,这非常好 – 应用程序具有典型的“锯齿”模式 – OOM发生在锯齿的顶部.遗憾的是,无法使用分析器(AFAIK)来识别内存流失源.
是否可以设置内存“软限制”,应该强制使用GC?目前,GC只在内存处于绝对限制时执行,从而产生OOM.
最佳答案 垃圾收集不应该“及时发生”.当新的内存分配将Gen-0推到一定限度时,就会发生这种情况.因此,它们总是在内存分配将内存超过其限制之前发生.这种情况每天发生在世界各地很多次,如果有任何漏洞并不为人所知,我会感到惊讶.
您是否认为实际上可能会分配比可用内存更多的内存?操作系统只允许您在大多数32位计算机上访问2GB.
还有其他一些可能性:
>您的应用程序是否使用未管理的内存?
>您的应用程序是否固定任何内存?如果是这样,可能会导致碎片问题,特别是如果您没有释放pin.