2013-04-05 25 views
6

hurdaya için HtmlUnit'in kullanırken. OutOfMemoryError Bir siteye giriş ve benim kod <code>java.lang.OutOfMemoryError</code> neden oluyor Ve daha da çalışamadı çalıştırdığınızda ardından tablonun</p> <p>veri indirmek için HtmlUnit'in kullanıyorum

ardından

benim kodudur:

WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_6); 
webClient.getOptions().setJavaScriptEnabled(true); 
webClient.getOptions().setCssEnabled(false); 
webClient.getOptions().setRedirectEnabled(true); 
webClient.getCookieManager().setCookiesEnabled(true); 
          webClient.getOptions().setPrintContentOnFailingStatusCode(false); 
webClient.setAjaxController(new NicelyResynchronizingAjaxController()); 
webClient.getOptions().setTimeout(50000); 
webClient.getOptions().setUseInsecureSSL(true); 
webClient.getOptions().setPopupBlockerEnabled(true); 

HtmlPage htmlPage=webClient.getPage(url); 
Thread.sleep(200); 
          //~~~~~~~Log-In 
HtmlTextInput uname=(HtmlTextInput)htmlPage.getFirstByXPath("//*[@id=\"username\"]"); 
uname.setValueAttribute("xxx"); 
HtmlPasswordInput upass=(HtmlPasswordInput)htmlPage.getFirstByXPath("//*[@id=\"password\"]"); 
upass.setValueAttribute("xxx"); 
HtmlSubmitInput submit=(HtmlSubmitInput)htmlPage.getFirstByXPath("//*[@id=\"login-button\"]/input"); 
htmlPage=(HtmlPage) submit.click(); 
Thread.sleep(200); 
webClient.waitForBackgroundJavaScript(10000); 
for (int i = 0; i < 250; i++) { 
if (!htmlPage.asText().contains("Loading...")) { 
    break; 
    } 
    synchronized (htmlPage) { 
    htmlPage.wait(500); 
} 
} 

System.out.println(htmlPage.asText()); 

ve ben yığın bellek tahsis etmek catlina.sh dosyasında follwoing hatları koyduk Ama yine de aynı hatayı alıyorum

java.lang.OutOfMemoryError: Java heap space 
at net.sourceforge.htmlunit.corejs.javascript.Node.newString(Node.java:155) 
at net.sourceforge.htmlunit.corejs.javascript.Node.newString(Node.java:151) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.createPropertyGet(IRFactory.java:1990) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformPropertyGet(IRFactory.java:968) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:106) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformPropertyGet(IRFactory.java:964) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:106) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformPropertyGet(IRFactory.java:964) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:106) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformFunctionCall(IRFactory.java:595) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:86) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformInfix(IRFactory.java:775) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:161) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformAssignment(IRFactory.java:368) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:152) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformExprStmt(IRFactory.java:488) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:149) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformBlock(IRFactory.java:406) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:82) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformIf(IRFactory.java:762) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:110) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformBlock(IRFactory.java:406) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:82) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformIf(IRFactory.java:762) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:110) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformBlock(IRFactory.java:406) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:82) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformIf(IRFactory.java:768) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:110) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformBlock(IRFactory.java:406) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:82) 
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformFunction(IRFactory.java:560) 

stackTrace aşağıdadır (RAM boyutum 2GB).

if [ -z "$LOGGING_MANAGER" ]; then 
    JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" 
else 
    JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER" 
fi 

# Uncomment the following line to make the umask available when using the 
# org.apache.catalina.security.SecurityListener 
    JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`" 
    JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx2048m -XX:MaxPermSize=512m" 
    JAVA_OPTS="-server -XX:+UseConcMarkSweepGC" 
+0

çalışır may –

+0

Sadece sebebi yığın izinden yolladım –

+0

Bu yığın izinde kodunuzun belirtisi yok, bu yüzden onu kısaltdığınızı söylüyorum. Bir noktada kodunuzdan bir çizgi olmalı (ya da bir şey gibi bir çizgi gösteren ... 1234 daha fazla satır) –

cevap

5

Eğer kodunun son satırında bu $ JAVA_OPTS içerir, bunun çok recursing olduğunu görebilirsiniz. Bu tüm yığın izi gibi görünmüyor - ne kadar kestiriyorsun?
+2

teşekkürler rajendra ... son satırı catlina.sh dosyasında yanlış yazdım. Şimdi çalışıyor teşekkürler. –