Увеличение размера кучи Java для класса внутри jar

Мне нужно выполнить программы Java, содержащиеся в файле JAR, но я получаю сообщение об ошибке, требующее увеличения размера кучи Java. Мне нужно увеличить размер кучи с помощью командной строки. Я пробовал java -Xmx6144M -d64, но это не сработало. С другой стороны, java -Xmx6144M ClassName требует ClassName. Как можно указать имя класса, находящегося внутри банки? есть ли какая-то команда для увеличения кучи 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)

person Ammar Sahib    schedule 04.09.2013    source источник


Ответы (1)


Я считаю, что вам нужно увеличить выделение памяти для запущенных задач карты. По умолчанию установлено 200 МБ, что в вашем случае кажется недостаточным. Если класс драйвера является подклассом Tool, вы можете передать следующие аргументы -Dmapred.child.java.opts = -Xmx500m. Здесь вы увеличиваете объем памяти с 200 до 500.

Вы также можете выполнить профилирование задания сокращения карты, чтобы увидеть, какие объекты занимают память.

person Magham Ravi    schedule 04.09.2013