java.lang.OutOfMemoryError: মাভেনে জাভা হ্যাপ স্পেস


122

আমি যখন মাভেন পরীক্ষা চালাই, java.lang.OutOfMemoryError ঘটে। আমি এটি সমাধানের জন্য গুগল করেছি এবং চেষ্টা করেছি export MAVEN_OPTS=-Xmx1024m, কিন্তু এটি কার্যকর হয়নি। যে কেউ এই সমস্যার জন্য অন্যান্য সমাধান জানেন, বিটিডাব্লু আমি ম্যাভেন 3.0 ব্যবহার করছি

আগাম ধন্যবাদ

"Mvn test -e" চালানোর সময় ত্রুটি বার্তাটি এখানে আটকান

ব্যর্থ পরীক্ষা:
  সাবধানবাণী (junit.framework.TestSuite $ 1)
  testDefaultPigJob_1 (com.snda.dw.pig.impl.DefaultPigJobLocalTest)
  testDefaultPigJob_2 (com.snda.dw.pig.impl.DefaultPigJobLocalTest)

টেস্ট রান: 11, ব্যর্থতা: 3, ত্রুটি: 0, এড়িয়ে গেছে: 0

10/11/01 13:37:18 তথ্য এক্সিকিউশনিন.এক্সএকসিচিউশন ইঞ্জিন: হ্যাডোপ ফাইয়ের সাথে সংযুক্ত
লে সিস্টেম এ: ফাইল: ///
[তথ্য] ------------------------------------------------------ -------------------------
[তথ্য] বিল্ড ব্যর্থতা
[তথ্য] ------------------------------------------------------ -------------------------
[তথ্য] মোট সময়: 30.063 সেকেন্ড
[তথ্য] এখানে শেষ হয়েছে: সোমবার 01 নভেম্বর 13:37:18 পিডিটি 2010
[তথ্য] চূড়ান্ত মেমরি: 3 এম / 6 এম
[তথ্য] ------------------------------------------------------ -------------------------
[ERROR] org.apache.maven.plugins: maven-surefire-પ્લગઇન: 2 কার্যকর করতে ব্যর্থ হয়েছে।
5: টেস্ট (ডিফল্ট-পরীক্ষা) প্রকল্পে dw.pig: পরীক্ষার ব্যর্থতা রয়েছে।
[ত্রুটি]
[ত্রুটি] দয়া করে E: \ কোড \ জাভা \ ওয়ার্কস্পেস \ dw.pig \ লক্ষ্য \ নিশ্চিত অগ্নি-প্রতিবেদনগুলি দেখুন
স্বতন্ত্র পরীক্ষার ফলাফল।
[ত্রুটি] -> [সহায়তা 1]
org.apache.maven.lifecycle.LifecycleExecutionException: গোলটি কার্যকর করতে ব্যর্থ হে
rg.apache.maven.plugins: maven-surefire-login: 2.5: প্রকল্পে পরীক্ষা (ডিফল্ট-পরীক্ষা)
 dw.pig: পরীক্ষার ব্যর্থতা আছে।

দয়া করে E: \ কোড \ জাভা \ ওয়ার্কস্পেস w dw.pig \ লক্ষ্য \ এগুলির জন্য নিশ্চিত ফায়ার-রিপোর্টগুলি দেখুন
বিভাজন পরীক্ষার ফলাফল।
        org.apache.maven.lifecycle.intern.MojoExecutor.execute এ (মোজোএক্সিকিউটর
.java: 199)
        org.apache.maven.lifecycle.intern.MojoExecutor.execute এ (মোজোএক্সিকিউটর
.java: 148)
        org.apache.maven.lifecycle.intern.MojoExecutor.execute এ (মোজোএক্সিকিউটর
.java: 140)
        org.apache.maven.lifecycle.intern.LifecycleModuleBuilder.buildProje এ
CT (LifecycleModuleBuilder.java:84)
        org.apache.maven.lifecycle.intern.LifecycleModuleBuilder.buildProje এ
CT (LifecycleModuleBuilder.java:59)
        org.apache.maven.lifecycle.intern.Lifec سائیکلStarter.singleThreadedBu এ
ild (LifecycleStarter.java:183)
        org.apache.maven.lifecycle.intern.LifecycleStarter.execute এ (লাইফেকাইক্লায়
eStarter.java:161)
        org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:314) এ
        org.apache.maven.DefaultMaven.execute (DefaultMaven.java151) এ
        org.apache.maven.cli.MavenCli.execute (MavenCli.java:445) এ
        org.apache.maven.cli.MavenCli.doMain (মাভেনক্লি.জভা অনুগ্রহ)
        org.apache.maven.cli.MavenCli.main এ (মাভেনক্লি.জভা অনুচ্ছেদ 32)
        সূর্য.আরফ্লেক.নেটিভ ম্যাথোডএ্যাকসেসরআইএমপিএল.নোওকে0 (নেটিভ পদ্ধতি)
        at sun.reflect.NativeMethodAccessorImpl.invoke (নেটিভমেথোডএ্যাকসেসরআইএমপিএল)।
জাভা: 39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAcces
sorImpl.java:25)
        java.lang.reflect.Method.invoke এ (মেথড.জাভা ৫৫৯7)
        org.codehaus.plexus.classworlds.launcher.Launcher.launch এ উন্নত (চালু করা হয়েছে) এ
cher.java:290)
        org.codehaus.plexus.classworlds.launcher.Launcher.launch এ (লঞ্চার.জ্যাভ
উত্তর: 230)
        org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode এ (লা
uncher.java:409)
        org.codehaus.plexus.classworlds.launcher.Launcher.main এ (লঞ্চার.জভা:
352)
এর দ্বারা সৃষ্ট: org.apache.maven.plugin.MojoFailureException: পরীক্ষার ব্যর্থতা রয়েছে
।

দয়া করে E: \ কোড \ জাভা \ ওয়ার্কস্পেস w dw.pig \ লক্ষ্য \ এগুলির জন্য নিশ্চিত ফায়ার-রিপোর্টগুলি দেখুন
বিভাজন পরীক্ষার ফলাফল।
        org.apache.maven.plugin.surefire.SurefirePlugin.execute এ (শিয়ারফায়ারপ্লুগি
n.java:629)
        org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo এ (ডিফল্ট
BuildPluginManager.java:107)
        org.apache.maven.lifecycle.intern.MojoExecutor.execute এ (মোজোএক্সিকিউটর
.java: 195)
        ... আরও 19
[ত্রুটি]
[ERROR] পূর্ণ ডিবাগ লগিং সক্ষম করতে -X সুইচ ব্যবহার করে মাভেনকে আবার চালান Re
[ত্রুটি]
[ত্রুটি] ত্রুটি এবং সম্ভাব্য সমাধান সম্পর্কে আরও তথ্যের জন্য, দয়া করে পুনরায়
d নিম্নলিখিত নিবন্ধগুলি:
[ত্রুটি] [সহায়তা 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc

আপনার পরীক্ষাতে মেমরি ফুটো হতে পারে? এটি আবর্জনা সংগ্রহ করা সত্ত্বেও, আপনি এখনও জাভাতে একটি মেমরি ফাঁস তৈরি করতে পারেন: আইবিএম
লাইবারি

উত্তর:


158

আমি যখন মাভেন পরীক্ষা চালাই, java.lang.OutOfMemoryError ঘটে। আমি এটি সমাধানের জন্য গুগল করেছি এবং MAVEN_OPTS = -Xmx1024m রফতানি করার চেষ্টা করেছি, তবে এটি কার্যকর হয়নি।

Xmxঅপশনগুলি সেট MAVEN_OPTSকরে কাজ করে, এটি ম্যাভেন শুরু করার জন্য ব্যবহৃত জেভিএমকে কনফিগার করে। বলা হচ্ছে, ম্যাভেন-শিফারফায়ার-প্লাগইন ডিফল্টরূপে একটি নতুন জেভিএম কাঁটাচামচ করে এবং আপনার MAVEN_OPTSএভাবে পাস হয় না।

ম্যাভেন-শিফায়ারফায়ার-প্লাগইন দ্বারা ব্যবহৃত জেভিএমের আকারের কনফিগার করতে আপনার হয়:

  • পরিবর্তন forkModeকরার জন্য never(যা একটি না তাই ভাল ধারণা হবে কারণ ম্যাভেন পরীক্ষা থেকে বিচ্ছিন্ন হবে না) ~ বা ~
  • argLineপ্যারামিটারটি (সঠিক উপায়ে) ব্যবহার করুন :

পরবর্তী ক্ষেত্রে, এরকম কিছু:

<configuration>
  <argLine>-Xmx1024m</argLine>
</configuration>

তবে আমার বলতে হবে যে আমি এখানে স্টিফেনের সাথে একমত হতে চাই, আপনার পরীক্ষার মধ্যে একটির সাথে খুব সম্ভবত কিছু ভুল আছে এবং আমি নিশ্চিত নই যে আরও সমস্যার স্মৃতি দেওয়া আপনার সমস্যার "সমাধান" (আড়াল?) করার সঠিক সমাধান?

তথ্যসূত্র


1
আপনি কি কেবলমাত্র আপনার প্যারেন্ট pom.xml এর মধ্যে <কনফিগারেশন> ট্যাগ আপডেট করেন?
কেভিন মেরেডিথ


1
@ ম্যাকার্সিকে অবমূল্যায়ন forkModeকরা হয়েছে, তবে আমি কেবলমাত্র forkCountএটির সাথে প্রতিস্থাপন করা হবে যা একই কার্যকারিতা রয়েছে। আপনি MAVEN_OPTS ব্যবহার করার একটি উপায় হ'ল <argLine>${env.MAVEN_OPTS}</argLine>তবে এটি স্পষ্টতই প্রস্তাবিত নয় কারণ এটি কম্পিউটার থেকে কম্পিউটারে পরিবর্তিত হতে পারে ( stackoverflow.com/a/10463133/32453 )। আরো উল্লেখ্য আপনি jacoco ব্যবহার করছেন আপনি সেট argLine অনুমিত করছি যে অন্যভাবে stackoverflow.com/questions/12269558/maven-jacoco-plugin-error
rogerdpack

63

মাভেনের জন্য নতুন হিসাবে (আমার মত) এখানে সম্পূর্ণ কনফিগারেশন যা আপনার পোমের বিল্ড বিভাগে যায়। চিয়ার্স।

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</version>
        <configuration>
            <argLine>-Xmx1024m</argLine>
        </configuration>
      </plugin>
    </plugins>
  </build>

12

সম্ভাবনা হ'ল যে সমস্যাটি ইউনিট পরীক্ষার মধ্যে একটিতে রয়েছে যা আপনি মাভেনকে চালনার জন্য বলেছিলেন।

যেমন, গাদা আকারের সাথে ফিডিং করা ভুল পদ্ধতির। পরিবর্তে, আপনাকে ইউনিট পরীক্ষার দিকে নজর দেওয়া উচিত যা ওওমের কারণে ঘটেছে, এবং এটি ইউনিট পরীক্ষার বা এটি যে কোডটি পরীক্ষা করছে তাতে দোষ কিনা তা খুঁজে বের করার চেষ্টা করা উচিত।

স্ট্যাক ট্রেস দেখে শুরু করুন। যদি একটি না থাকে তবে বিকল্পটি mvn ... testদিয়ে আবার চালান -e


@ স্টিফেন, আমি রানী কনফিগারেশনে Xmx1024m সেট করার পরে আমিগ্রহণের ক্ষেত্রে পরীক্ষার কেসটি পাস করতে পারি, তবে আমি কনসোলে "এমভিএন পরীক্ষা" চালানোর পরে এটি সর্বদা আউটআফমেমারি এয়ারার নিক্ষেপ করে, এমনকি আমি "এমভিএন পরীক্ষা" -ডিএমএভিএন_ওপিটিএস =-এক্সএমএক্স 1024 মি যোগ করি "
zjffdu

2
@ জেজেফদুডু - আপনি আমার বক্তব্য পুরোপুরি মিস করেছেন! "-E" যুক্ত করার উদ্দেশ্য পরীক্ষাগুলি কাজ করে না। তারা কেন কাজ করে না তা খুঁজে বের করার জন্য।
স্টিফেন সি

1
@ জেজেফদুডু - সেক্ষেত্রে আপনার জাভা অন্যান্য সমস্যার মতোই আপনাকেও হার্ড ডিবাগ করতে হবে।
স্টিফেন সি

2
জিডাব্লুটিটি পরীক্ষার কেসগুলি চালানোর সময় আমি এই সমস্যাটি পাই, যা একটি সম্পূর্ণ ব্রাউজার পরিবেশের অনুকরণ করে। কখনও কখনও এটি গাদা আকার বাড়াতে ঠিক আছে।
djjeck

1
@ ডিজেজেক - হ্যাঁ মাঝে মাঝে। তবে বেশিরভাগ সময় এটি সঠিক সমাধান বলে আমি মনে করি না।
স্টিফেন সি

8

এই সমস্যাটি সাময়িকভাবে কাজ করতে আমি নিম্নলিখিতটি দ্রুততম উপায় হিসাবে পেয়েছি:

export JAVA_TOOL_OPTIONS="-Xmx1024m -Xms1024m"

6

আমি আমার পক্ষে এই সমস্যাটি 2 উপায়ে সমাধান করেছি:

  1. Pom.xML এ এই কনফিগারেশন যুক্ত করা হচ্ছে

    <configuration><argLine>-Xmx1024m</argLine></configuration>
  2. 1.6 এর পরিবর্তে ব্যবহৃত JDK 1.7 এ স্যুইচ করুন


2

Java.lang.OutOfMemoryError সমাধান করার জন্য: মাভেনের জাভা হ্যাপ স্পেস, পামে কনফিগারেশনের নীচে কনফিগার করার চেষ্টা করুন

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>${maven-surefire-plugin.version}</version>
     <configuration>
        <verbose>true</verbose>
        <fork>true</fork>
        <argLine>-XX:MaxPermSize=500M</argLine>
    </configuration>
</plugin>

1
ম্যাক্সপার্মসাইজ উল্লেখ করার জন্য +1। আপনার ইউনিট পরীক্ষায় নতুন HiveContext তৈরি করার মতো বাজিলিয়ান ক্লাস লোড করার কারণে যদি আপনার স্মৃতি ছাড়িয়ে যায় ত্রুটি ঘটে থাকে তবে এটি আপনার সমাধান।
swdev

-2

কেবল গাদা স্মৃতি নয়। এই পরিবর্তনের পরিবেশগত পরিবর্তনশীলগুলিতে এই পরিবর্তনকগুলি ব্যবহার করুন ven

variable name: MAVEN_OPTS
variable value: -Xmx512m -XX:MaxPermSize=256m

উদাহরণ:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=500m"

তারপরে ত্রুটিটি "জাভা হ্যাপ স্পেস" নয়, তবে আলাদা।
কার্ল রিখটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.