堆内存管理应用例题
来源:互联网 发布:淘宝township充值原理 编辑:程序博客网 时间:2024/05/23 01:58
下列关于堆内存管理描述错误的是()A
递归时没有退出条件会发生栈溢出。
A.堆内存分为年轻代、老年代、持久代,持久代内存溢出为OutOfMemoryError: Java heap space
B.当Eden区满,再创建对象,会触发年轻代GC,不能回收的对象会放到To Survivor区
C.年轻代的To Survivor满了或里面的对象足够Old(超过XX:MaxTenuringThreshold),则这些对象被copy到老年代
D.当Old区被放满的之后,进行Full GC,Full GC后,若Survivor及old区仍然无法存放从Eden复制过来的部分对象,则出现OOM错误
内存申请过程
- JVM会试图为相关Java对象在Eden中初始化一块内存区域;
- 当Eden空间足够时,内存申请结束。否则到下一步;
- JVM试图释放在Eden中所有不活跃的对象(minor collection),释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区;
- Survivor区被用来作为Eden及old的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区;
- 当old区空间不够时,JVM会在old区进行major collection;
- 完全垃圾收集后,若Survivor及old区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现"Out of memory错误"
关于以下方法调用描述正确的是:AD
1
2
3
4
5
6
private
static
final List<String> list =
new
ArrayList<>();
public
static
String test(String j){
int
i = 1, s = 1, f = 1, a = 1, b = 1,c = 1,d = 1,e = 1;
list.add(
new
String(
"11111111111111111111111111111"
));
return
test(s+i+f+a+b+c+d+e+
""
);
}
A.一定会发生” OutOfMemoryError: Java heap space”B.一定会发生” StackOverflowError”C.一定会发生” OutOfMemoryError: Java heap space与StackOverflowError”D.当发生内存溢出错误时不需要用try…catch来捕获,需检查代码及jvm参数配置的合理性
递归时没有退出条件会发生栈溢出。
阅读全文
0 0
- 堆内存管理应用例题
- c语言内存管理例题
- Oracle内存管理:堆
- Jvm堆内存管理
- 内存管理和堆
- C++ 堆内存管理
- 内存管理--堆
- ptmalloc堆内存管理
- JVM内存管理-----堆内存
- JVM内存管理,堆、栈
- jvm堆内存管理有关
- JAVA堆内存设置管理
- FreeRTOS笔记:堆内存管理
- cassandra 堆外内存管理
- 2. FreeRTOS----堆内存管理
- Java堆外内存管理
- 笔记:JVM内存管理-----堆内存
- jvm内存管理-堆内存分配
- 日志压缩资源消耗优化: Linux CGroup 的使用
- 最优编辑
- 高精度加法运算~简便版
- HBuilder配置自动编译Less
- Java语言中的线程安全--《深入理解Java虚拟机》笔记
- 堆内存管理应用例题
- Python学习笔记 9--正则表达式
- 网络技巧(一):如何在github上快速找到项目内容?
- 简析BS/CS
- 共享单车首页__安卓高德地图集成简单实践
- Statistic_COM
- Redis面试题
- 文件搜索小工具
- LeetCode 54.Spiral Matrix (Medium)