2012-04-17 16 views
9

जब एक बड़ी फ़ाइल मैं निम्न त्रुटि ढेर आकार को बढ़ाए बिना Caught: java.lang.OutOfMemoryError: Java heap spaceआप ग्रोवी में ढेर आकार के बिना बड़ी फ़ाइलों को कैसे पार्स करते हैं?

आप ग्रूवी में बड़ी फ़ाइलों को कैसे पार्स करते मिल पार्स करने?

उदाहरण कोड है कि बड़ी फ़ाइलों के साथ विफल हो ...

import java.io.File 

def inputFile = new File("c:/dev/test.txt") 
    inputFile.getText().eachLine{ it, i -> 
      ... do something with each line 
     } 

उत्तर

16

सुनिश्चित करें कि आप एक तरीका है कि स्मृति में पूरी फ़ाइल लोड नहीं करता है में फ़ाइल पर पुनरावृत्ति कर रहे हैं ...

  • इस मामले में विशेष रूप से inputFile.getText बारी()। eachLineinputFile.eachLine में
  • का उपयोग न करें .readLines() क्योंकि यह पूरी फ़ाइल को स्मृति में लोड और लोड करेगा। eachLine {} .. बजाय इस्तेमाल किया जाना चाहिए
  • तुम भी groovy -Xmx1024M myscript.groovy देखें का उपयोग करके एक JVM झंडा, 1GB करने के लिए जैसे के साथ ढेर आकार का विस्तार कर सकते भी answer here

के लिए ग्रूवी मेलिंग सूची पर इस page देखें अधिक जानकारी और आगे की चर्चा के

कोड है कि एक ढेर अंतरिक्ष त्रुटि के बिना काम करता है ...

def inputFile = new File("c:/dev/test.txt") 
inputFile.eachLine{ it, i -> 
     ... do something with each line 
    } 
+5

यह लंबे समय के रूप ठीक है के रूप में यह एक बड़े पैमाने पर लाइन नहीं है। यह उस डेटा को उबाल सकता है जो वह डेटा के साथ करना चाहता है। – Steven

संबंधित मुद्दे

 संबंधित मुद्दे