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 制限をテストするにはどうすればよいですか?