JAXB

2016-04-04 29 views
0

kullanarak XML'de çok sayıda nesneyi Marshaling yaparken sorunum çıkıyor java.lang.OutOfMemoryError alıyorum: Java yığın alanı XML'de çok sayıda nesneyi çalışırken istisna, ancak daha önce daha azını kullanıyordum Nesne veya xml dosyasının daha az boyutta olduğu zaman JAXB marshaller.marshal (message, fi); kesinlikle iyiydi. Şimdi, projemdeki yeni gereksinime göre, XML dosyasında yeni hikayeye göre mantığı değiştirdiğim verileri artırmamız gerekiyor. Ancak, tweaking mantığından sonra, raporu OOM istisnasını başlattıktan sonra 2-3 kez iyi görünüyor.JAXB

Not: Xms, Xmx ve XX: MaxPermSize artışım var ancak yine de aynı sorunla karşılaşıyorum.

Bu sorunu çözmeme yardımcı olabilir misiniz?

+0

Xms, Xmx ve XX: MaxPermSize değerlerinin yansıtılıp yansıtmadığını kontrol edebilir misiniz? Jmap uygulamasını jdk bin klasörüne aşağıdaki gibi çağırarak yapabilirsiniz: ./jmap -heap praveen

+0

Merhaba Praveen, linux üzerinde denedim ama "Jmap coammand bulunamadı", http: // stackoverflow çalıştı .com/sorular/11237872/java-komut-bulunamadı-on-linux. – hari

+0

cd locationOfJdkBin bundan sonra ./jmap -heap processid – praveen

cevap

0

java.lang.OutOfMemoryError: JVM, yığın alanından çıktığında Java yığın alanı genellikle kaynaklanır.

Bu

i soruna neden olan ikinci bir farz Senin durumunda iki nedenden
1. Memory leak 
2. excessive computation by the app 

başlıca nedeni olabilir. Bu, Xmx değerini geçerli olandan daha büyük bir değere ayarlayarak çözülebilir.

Eğer tomcat kullanıyorsanız, bunu setenv.sh içindeki tomcat bölmesinde yapabilirsiniz. ayarı CATALINA_OPTS=Xmx1024M (or any other value)

+0

Merhaba Praveen, Zaten Xmx2048M kullanıyorum, ancak yine de aynı sorunla karşı karşıyayız. Biz marshaling durumunda herhangi bir şekilde XML'de 25 kuruş satırı alıyoruz, OOM'un sebebi olabileceğini düşündüm. Jaxb Marshaling'de OOM'u çözebilecek başka bir şey önerebilir misin? – hari

+0

@hari Uygulamanızın sahip olabileceği maksimum Xmx değeri nedir? Bir sınırlama varsa, xml dosyasını toplu olarak veya bir çeşit önbelleğe alma stratejisiyle ayrıştırmayı düşünebilirsiniz. – praveen

+0

Bu bağlantı yararlı olabilir http://stackoverflow.com/questions/26310595/how-to-parse-big-50-gb-xml-files-in-java – praveen