在项目中,在子线程中出现:java.lang.OutOfMemoryError: GC overhead limit exceeded ,而是用exception进行没法捕获异常,由于属于Error,因此只能是用Throwable进行捕获。css
- java.lang.OutOfMemoryError: GC overhead limit exceeded
- at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1022)
- at org.apache.commons.io.IOUtils.copy(IOUtils.java:999)
- at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:218)
- at org.apache.commons.io.FileUtils.readFileToByteArray(FileUtils.java:995)
- ...........................
scheduledService = new ScheduledThreadPoolExecutor(1);
ReBuildJob job =
new
ReBuildJob();
job.setUncaughtExceptionHandler(
new
UncaughtExceptionHandler(){
@Override
public
void
uncaughtException(Thread t, Throwable e) {
logger
.error(
"Thread down, name:'{}', Exception {}"
,t.getName(), e);
}
});
scheduledService
.scheduleAtFixedRate(job, UnicornConstant.
TIMER_DELAY
,
UnicornConstant.
TIMER_INTERVAL
, TimeUnit.
MILLISECONDS
);
|
for
(File file : cssFiles) {
try
{
iteratorHandle(resourceReader, file, versionList);
}
catch
(Throwable e) {
logger
.error(
"Note: load css file '{}' exception, {}"
, file, e);
}
}
|
其余建议:html
1、异常以下:
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceededjava
2、解释:
JDK6新增错误类型。当GC为释放很小空间占用大量时间时抛出。
通常是由于堆过小。致使异常的缘由:没有足够的内存。apache
3、解决方案:ide
一、查看系统是否有使用大内存的代码或死循环。
二、能够添加JVM的启动参数来限制使用内存:-XX:-UseGCOverheadLimitpost