span8
span4
嗨FME一代,
今天的每周问题查询关于内存使用的日志消息。我们关心的是这些信息意味着什么,以及我们能做些什么。
问)此警告出现在我的日志文件中:
未能释放足够的内存以达到进程使用限制
我该怎么办?如果什么都不做,潜在的影响是什么?据我所知,脚本创建的输出文件没有问题。
(一)简而言之,这条消息告诉你,FME正在变得内存不足。如果你不做任何事情,那么-只要过程结束-你是正确的,输出将是好的。但让我们深入探讨一下为什么会出现这种信息。。。
因此,FME内置了一些工具,用于所谓的内存管理。换句话说,我们不能在不考虑计算机状态的情况下就开始转换数据。我们试图计算我们可以使用多少资源来获得最佳的FME性能,同时又不贪心到引起系统问题。
这是由这些行在我们的日志文件:
系统状态:18.00 GB的虚拟内存可用操作系统:Mac OS X版本10.14.4 FME配置:(建造18 e226):过程极限是16.00 GB的物理内存FME配置:开始释放内存当过程使用超过16.83 GB的虚拟内存FME配置:停止释放内存,进程使用低于12.62 GB的虚拟内存
基本上(在本例中),FME有18gb可用内存:剩余的16gb物理内存,以及一定量的称为虚拟内存的磁盘空间。
FME将读取内存中正在处理的特性。我们将在内存中保留尽可能多的特性,因为这是访问它们进行处理的最快方法。
然而,一旦我们用完16.83gb的内存,为了避免使系统不稳定,我们将开始发布不是立即需要的特性。然后我们可以添加功能是需要,而不会造成内存不足。
一旦我们的使用回到12.62gb以下,那么我们将停止主动发布特性,因为我们觉得我们不再有破坏系统稳定的危险。
到目前为止,一切顺利。但是错误消息从何而来?
因此,上面的错误意味着:FME已经超出了它的最大使用量(这里是16.83gb),并试图发布一些暂时不需要的功能。然而,尽管已经从内存中释放了尽可能多的特性,我们仍然超出了使用限制。
换句话说,我们的内存已经不够了,对此我们无能为力。
那么会发生什么呢?我们继续处理。我们希望不会发生不好的事情,但是这个系统可能会变得不稳定。因此出现了警告信息。
如果加工完成没有进一步的问题,结果将是好的。我们超出了预期的内存限制,但没有发生什么糟糕的事情。唷!
但我们是如何以及为什么会走到这一步的呢?
有时会超出内存限制,因为FME正在处理大量的数据,并且确实需要一次在内存中保存大量数据。
但另一个原因是计算机上运行的其他应用程序。
如果让FME工作区运行,然后同时启动一个新的内存密集型应用程序,那么它可能开始使用FME最初依赖的资源。类似地,如果启动FME转换时内存密集型应用程序已经在运行,FME可能会更谨慎地考虑其限制。
解决方案是不要运行太多其他应用程序,以至于FME只能使用比它希望的更少的内存。实际上,我们刚刚在2019.2中更改了消息,包括以下内容:
为了提高稳定性和性能,请增加FME可用的内存。可以通过添加物理RAM、增加交换空间或关闭其他应用程序来增加可用内存
所以总结一下:
总的来说,这是一个罕见的信息,但要注意。
以下是我本周注意到或被问到的一些其他问题:
©2019安全亚搏在线软件公司法律