0

Javascript メモリ割り当てに関する UIWebView の 10MB 制限をテストしようとしています。これまでのところ、シミュレーター (iOS 5.1) で実行しているコードは次のとおりです。

int size = 10485760+1024000*10; 
int i = 13;
char *cStr = (char *) malloc(size); // 20MB buffer
char *lcStr = cStr;
lcStr+=i;
strcpy(cStr, "window._x = \'");
for ( ; i < size-4; i++){
    if(i%2){
        *lcStr = ' ';
    }else{
        *lcStr = 'c';
    }
    lcStr++;
}
strcpy(lcStr, "c\';\0");

NSString *longStr = [NSString stringWithCString:cStr encoding:NSASCIIStringEncoding];
// by now 40MB used

//memory usage spikes to 60MB
NSString *result = [self.webView stringByEvaluatingJavaScriptFromString: longStr];

free(cStr);

HTML/JS:

<script type="text/javascript">
    setTimeout(function(){document.getElementById("one").innerText = window._x;},3000);
</script>

私の問題は、ある時点でのJS割り当てが明らかに10MBを超えているにもかかわらず、上記のコードではUIWebViewによって例外がスローされないことです。計測器を使用してメモリ使用量を確認しました。

プログラム全体の最終結果は、「c」の束がWebビューの画面に表示されますが、クラッシュはしません。

私は何か間違ったことをしていますか?この JS 制限をテストするにはどうすればよいですか?

4

1 に答える 1