Java 常见内存溢出异常与代码实现
来源:互联网 发布:java get set方法 编辑:程序博客网 时间:2024/06/06 18:37
Java 堆 OutOfMemoryError
1
2
3
4
5
6
7
8
/**
* @author xiongyongshun
* VM Args: java -Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryError
*/
public
class
OutOfMemoryErrorTest {
public
static
void
main(String[] args) { List<Integer> list =
new
ArrayList<>();
int
i =
0
;
while
(
true
) { list.add(i++);
}
}
}
1
2
3
4
5
6
7
8
>>> java -Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryError com.
test
.OutOfMemoryErrorTest 16-10-02 23:35java.lang.OutOfMemoryError: Java heap spaceDumping heap to java_pid1810.hprof ...Heap dump
file
created [14212861 bytes
in
0.125 secs]Exception
in
thread
"main"
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3210)
at java.util.Arrays.copyOf(Arrays.java:3181)
at java.util.ArrayList.grow(ArrayList.java:261)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
at java.util.ArrayList.add(ArrayList.java:458)
at com.
test
.OutOfMemoryErrorTest.main(OutOfMemoryErrorTest.java:15)
Java 栈 StackOverflowError
1
2
3
4
5
6
7
8
9
10
/**
* @author xiongyongshun
* VM Args: java -Xss64k
*/
public
class
OutOfMemoryErrorTest {
public
static
void
main(String[] args) {
stackOutOfMemoryError(
1
);
}
public
static
void
stackOutOfMemoryError(
int
depth) {
depth++;
stackOutOfMemoryError(depth);
}
}
1
2
Exception in thread
"main"
java.lang.StackOverflowError
at com.test.OutOfMemoryErrorTest.stackOutOfMemoryError(OutOfMemoryErrorTest.java:
27
)
方法区内存溢出
运行时常量池溢出
1
2
3
4
5
6
7
8
/**
* @author xiongyongshun
* VM Args: -XX:PermSize=10M -XX:MaxPermSize=10M
*/
public
class
RuntimeConstantPoolOOMTest {
public
static
void
main(String[] args) { List<String> list =
new
ArrayList<String>();
int
i =
0
;
while
(
true
) { list.add(String.valueOf(i++).intern());
}
}
}
1
2
Exception
in
thread
"main"
java.lang.OutOfMemoryError: PermGen space
at java.lang.String.intern(Native Method) at com.
test
.RuntimeConstantPoolOOMTest.main(RuntimeConstantPoolOOMTest.java:16)
1
>>> java -XX:PermSize=10M -XX:MaxPermSize=10M com.
test
.RuntimeConstantPoolOOMTest 16-10-03 0:23Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=10M; support was removed
in
8.0Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=10M; support was removed
in
8.0
方法区的内存溢出
1
2
3
4
5
6
7
8
9
10
11
12
//VM Args: -XX:PermSize=10M -XX:MaxPermSize=10Mpublic class MethodAreaOOMTest { public static void main(String[] args) { while (true) {
Enhancer enhancer =
new
Enhancer();
enhancer.setSuperclass(MethodAreaOOMTest.
class
);
enhancer.setUseCache(
false
);
enhancer.setCallback(
new
MethodInterceptor() {
public
Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy)
throws
Throwable {
return
methodProxy.invokeSuper(o, objects);
}
});
enhancer.create();
}
}
}
1
/System/Library/Frameworks/JavaVM
.framework
/Versions/1
.6
/Home/bin/java
-jar -XX:PermSize=10M -XX:MaxPermSize=10M target
/Test-1
.0-SNAPSHOT.jar
1
2
3
4
Caused by: java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
... 11
more
MetaSpace 内存溢出
1
2
3
4
5
6
7
8
9
10
11
12
//VM Args: -XX:MaxMetaspaceSize=10Mpublic class MethodAreaOOMTest { public static void main(String[] args) { while (true) {
Enhancer enhancer =
new
Enhancer();
enhancer.setSuperclass(MethodAreaOOMTest.
class
);
enhancer.setUseCache(
false
);
enhancer.setCallback(
new
MethodInterceptor() {
public
Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy)
throws
Throwable {
return
methodProxy.invokeSuper(o, objects);
}
});
enhancer.create();
}
}
}
1
2
3
4
5
6
7
8
9
>>> java -jar -XX:MaxMetaspaceSize=10M target
/Test-1
.0-SNAPSHOT.jar
Exception
in
thread
"main"
java.lang.OutOfMemoryError: Metaspace
at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:345)
at net.sf.cglib.proxy.Enhancer.generate(Enhancer.java:492)
at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:114)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:480)
at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:305)
at com.
test
.MethodAreaOOMTest.main(MethodAreaOOMTest.java:22)
0 0
- Java 常见内存溢出异常与代码实现
- Java 常见内存溢出异常与代码实现
- Java 常见内存溢出异常与代码实现
- Java 常见内存溢出异常与代码实现
- Java常见内存溢出异常分析
- Java常见内存溢出异常分析
- Java常见内存溢出异常分析(OutOfMemoryError)
- Java常见内存溢出异常分析
- Java常见内存溢出异常分析(OutOfMemoryError)
- Java常见内存溢出异常分析(OutOfMemoryError)
- Java常见内存溢出异常分析(OutOfMemoryError)
- Java常见内存溢出异常分析
- Java常见内存溢出异常分析
- 【转】Java常见内存溢出异常分析
- 【转】Java常见内存溢出异常分析
- Java常见内存溢出异常分析
- Java常见内存溢出异常分析
- java内存区域与内存溢出异常
- Android6.0蓝牙搜索出错问题
- 递归思想在解决问题时的应用
- Python编码错误的解决办法SyntaxError: Non-ASCII character '\xe5' in file
- 最长公共子序列+最长递增子序列+最长递增公共子序列
- 正则表达式介绍,附程序开发常用正则表达式一览表
- Java 常见内存溢出异常与代码实现
- PowerMockito使用详解
- Oracle Parallel Execution(并行执行)
- PHP-redis中文文档
- SSM秒杀系统
- macbook装win7
- Linux USB驱动工作流程
- 自定义返回按钮偏移问题
- markdown语法