在iOS Cordova项目中处理内存管理和存储?

在iOS Cordova项目中处理内存管理和存储?,ios,iphone,cordova,memory-management,maps,Ios,Iphone,Cordova,Memory Management,Maps,有谁能告诉我如何在基于iOS Cordova的项目中使用“收到的内存警告”处理内存管理 我在iPhone或iPad(8.1版)上运行时,在iOS Cordova项目中收到此警告。我在应用程序中使用CDVlocation进行地理定位。我主要在加载基于地图的视图时收到此消息。我使用的是基于ARC的Xcode项目 使用cordova“已接收内存警告”管理内存警告方面的任何帮助都将不胜感激 谢谢大家在CDVPlugin.m中尝试这种方式 - (void)onMemoryWarning { //

有谁能告诉我如何在基于iOS Cordova的项目中使用“收到的内存警告”处理内存管理

我在iPhone或iPad(8.1版)上运行时,在iOS Cordova项目中收到此警告。我在应用程序中使用CDVlocation进行地理定位。我主要在加载基于地图的视图时收到此消息。我使用的是基于ARC的Xcode项目

使用cordova“已接收内存警告”管理内存警告方面的任何帮助都将不胜感激


谢谢大家

在CDVPlugin.m中尝试这种方式

 - (void)onMemoryWarning
{
   // override to remove caches, etc
    NSLog(@"onMemoryWarning");
    NSString * javascriptString = @"yourJSFunctionToManageMemoryWarnings();";
   [self.webView stringByEvaluatingJavaScriptFromString:javascriptString];
}

当您的iOS应用程序收到
已接收内存警告
通知时,iOS正试图回收尽可能多的内存,因为某些应用程序需要它。那个应用程序可能是你,也可能是其他人。发生这种情况时,所有当前正在执行的应用程序(不仅仅是您的应用程序)都会收到此通知,每个应用程序都应该通过释放尽可能多的未使用内存来响应。由于Javascript有自己的内存管理,Cordova应用程序真正能做的就是通过将变量设置为null(或一些小值)来解除对内存的引用,因此
myHugeGlobalObject=null
MyArrayOfonemilionThings=[],等等,以便垃圾收集器可以在下次运行时释放该内存。因此,当您收到
Received memory warning
通知时,您应该这样做

在CDVPlugin.m中,您可以执行以下操作将iOS通知发送到Javascript应用程序:

 - (void)onMemoryWarning
{
   // override to remove caches, etc
    NSLog(@"CVPlugin.m: Got onMemoryWarning notification");
    NSString * javascriptString = @"yourJSFunctionToManageMemoryWarnings();";
   [self.webView stringByEvaluatingJavaScriptFromString:javascriptString];
}
然后在Javascript中(比如在
index.html
中):


函数yourJSFunctionToManageMemoryWarnings(){
log(“调用了yourJSFunctionToManageMemoryWarnings());
myHugeGlobalObject=null;
Myarrayofonemilionthings=[];
}
这听起来像是在你的特殊情况下,iOS试图让内存可用,因为是你的应用程序需要它(以便加载地图视图),而你要做的正是你通常会做的:如上所述释放未使用的内存,当其他人也礼貌地这样做时,你将获得内存


也就是说,如果您在尝试加载地图视图时遇到了超出本文描述范围的某种类型的内存不足情况,那么您可能需要研究一些高级Javascript内存管理技术,如对象池()在这里,您基本上获取了启动时所需的所有内存,然后您知道在需要时会得到这些内存。

您是否尝试在Safari上连接开发工具并检查内存输出?通常,它与大型图像或大量使用混合CSS相关联。我在iPhone设备中遇到了这个内存问题。我如何将其与safari工具结合使用?请解释一下查看@Sujania的过程。如果您使用这段代码,您是否实现了
yourJSFunctionToManageMemoryWarnings()
在您的Javascript中使用函数,然后您是否在该函数中执行减少内存占用所需的操作?@Sujania请参阅下面我关于如何实现该函数和处理通知的回答。谢谢
<script>
    function yourJSFunctionToManageMemoryWarnings() {
        console.log("yourJSFunctionToManageMemoryWarnings() was called");
        myHugeGlobalObject = null;
        myArrayOfOneMillionThings = [];
    }
</script>