我需要执行JAR文件中包含的java程序,但是我收到一个错误,需要增加java堆大小。我需要使用命令行增加堆大小。我试过java -Xmx6144M -d64,但它没有用。另一方面,java -Xmx6144M ClassName需要ClassName。如何指定jar中的类名?是否有一些命令来增加所有类的Java堆?
这是错误:
ava.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.regex.Pattern.compile(Pattern.java:1047)
at java.lang.String.replace(String.java:2180)
at org.apache.hadoop.fs.Path.normalizePath(Path.java:146)
at org.apache.hadoop.fs.Path.initialize(Path.java:137)
at org.apache.hadoop.fs.Path.<init>(Path.java:126)
at org.apache.hadoop.fs.Path.makeQualified(Path.java:296)
at org.apache.hadoop.fs.RawLocalFileSystem$RawLocalFileStatus.<init>(RawLocalFileSystem.java:375)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:359)
at org.apache.hadoop.fs.RawLocalFileSystem.listStatus(RawLocalFileSystem.java:290)
at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:721)
at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:746)
at org.apache.hadoop.fs.ChecksumFileSystem.listStatus(ChecksumFileSystem.java:465)
at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:721)
at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:746)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:212)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:241)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:120)
答案 0 :(得分:2)
我相信您需要增加启动的地图任务的内存分配。默认值为200 MB,在您的情况下似乎不够。如果驱动程序类是Tool的子类,则可以传递以下参数-Dmapred.child.java.opts = -Xmx500m。在这里,你将内存从200增加到500.
您还可以对地图缩小作业进行分析,以查看哪些对象占用了内存。