2012-01-12 12 views
3

私は、とりわけ、.csvファイルを読み込んで.xmlファイルに変換する最初の変換を行うWebアプリケーションを開発しています。大きなデータファイルのため、firefox(9)、javascript、割り当てサイズがオーバーフローしました。これを避ける方法はありますか?

私は20MBのファイルを持っています。これはうまく処理されています(コードはOKです)。

しかし、私は80メガバイトのファイルを持って、そしてプロセスはエラーコンソール

エラーでメッセージで停止:割り当てサイズのオーバーフロー

そしてそれは、格納するオブジェクトの最後の行を指します大きなXML文字列。

コードは基本的に.csvファイルを分割します。各行は再び行を分割し、変数に追加されたxmlタグを使用してコンテンツを再構築します。

次に、80 mb(.csvファイル)の場合、文字列のサイズはFirefoxのサイズが大きすぎると仮定します。

私の質問には、変数や同様の回避策を分割するようなことができますか?それとも、これは時間の損失でしょうか?

ありがとうございました

+0

メモリを解放していますか?削除したり、使用していないvarsをnullに設定したりしますか? – khael

+0

私はそうではありません。私はJSが自動的にガベージコレクションを行います。スクリプトの実行中にJSが使用しているメモリが何であるか確認する方法はありますか?値の自動チェックのようにするには、このエラーが発生する前に素敵なメッセージを表示するか、(メモリを解放するなどの)ソリューションが動作しているかどうかをトラブルシューティングしますか? – Gerard

+1

firebugはあなたにmemoryProfileを教えてくれるでしょうし、正しい方向にあなたを指すことができます – khael

答えて

0

この質問は非常に古いようですが、私はこれについていくつか解決策を見つけました。最新のブラウザにURL APIを使用できます。

var file = document.getElementById('video').files[0]; 
window.URL = window.URL || window.webkitURL; 
var video = document.querySelector("#vid"); 
video.preload = 'metadata'; 
video.onloadedmetadata = function() { 
    window.URL.revokeObjectURL(this.src); 
    let time = video.duration; 
    console.log(video.duration); 
} 
video.src = URL.createObjectURL(file); 
関連する問題