【问题标题】:out of memory java heap exception内存不足java堆异常
【发布时间】:2013-03-04 23:39:08
【问题描述】:

我在 unix 环境中运行 java 代码时出现内存不足 java 堆异常。

我有调用 java 类的 bash shell 脚本,在运行脚本后几秒钟内我得到了错误。

任何建议都会有所帮助。

下面是我的 shell 脚本。

home_dir=/opt/IBM/IEEP/MigrationBatch
java_home=/opt/IBM/WAS/java
lib_path=$home_dir/lib
job_path=$home_dir/bin/jobs
config_path=$home_dir/bin/config

batch_root_path=$home_dir
root_path=$batch_root_path/migration

mkdir -p $root_path
mkdir -p $root_path/working

log_date=$(date +%m%d%Y_%H%M%S)
run_date=$(date +%Y%m%d_%H%M%S)
job_name="MigrationBatch"

script_log_path=$root_path/script_logs
logfile=$script_log_path/script_log_migration_txt_$log_date.txt
mkdir -p $script_log_path
echo "Script Log Files available at $logfile"
exec>>$logfile
echo "Starting Java process for MigrationBatch Job...."

## STEP 1 : Run the Java Job
export JAR_HOME=$lib_path
export JOB_HOME=$job_path
export CONFIG_HOME=$config_path

JAR_CLASSPATH=:$lib_path/activation-1.1.jar:
echo $JAR_CLASSPATH

$java_home/bin/java -Djob_name=$job_name - Drun_timestamp=$run_date -cp $JAR_CLASSPATH:$job_path:$config_path org.springframework.batch.core.launch.support.CommandLineJobRunner migrationJob.xml  migrationJob -next

script_output="$(echo $?)"

【问题讨论】:

  • -Drun_timestamp...之间的一长串空格是故意的吗?
  • @chepner。而复制粘贴它得到了空间。

标签: shell


【解决方案1】:

这不是你的shell内存不足,这是你可以尝试的java命令行执行:

 java -Xmx1024m -jar jarfie
 java -Xms512m -Xmx2g -jar somejar
 $java_home/bin/java -Xms512m -Xmx2g -Djob_name=$job_name -Drun_timestamp=$run_date -cp $JAR_CLASSPATH:$job_path:$config_path org.springframework.batch.core.launch.support.CommandLineJobRunner migrationJob.xml migrationJob -next

如果它仍然给您带来内存问题,您可能需要增加更多

【讨论】:

  • 我理解它的 java 异常,同时从 shell 脚本调用下面的 java 类。 $java_home/bin/java -Djob_name=$job_name -Drun_timestamp=$run_date -cp $JAR_CLASSPATH:$job_path:$config_path org.springframework.batch.core.launch.support.CommandLineJobRunner migrationJob.xml migrationJob -next.任何有关如何修复它的建议都会有所帮助。
  • 我在 java -Xms512M -Xmx1524M 之后添加了以下参数
  • 它仍然失败 - 尝试启用其他选项并手动运行以查看会发生什么: java -verbose -verbose:class -verbose:gc -Xms2g -Xmx2g -Djob_name=$job_name -Drun_timestamp=$run_date - cp $JAR_CLASSPATH:$job_path:$config_path org.springframework.batch.core.launch.support.CommandLineJobRunner migrationJob.xml migrationJob -next
  • 还值得检查整个机器内存以查看您有多少可用内存以及例如 2 gig 是否实际上可以分配 2 gig 大小
  • 不用担心是什么问题
猜你喜欢
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 2010-10-05
相关资源
最近更新 更多