设为首页 加入收藏

TOP

JVM内存管理面试题及深度解析
2014-11-09 14:30:04 来源: 作者: 【 】 浏览:46
Tags:JVM 内存 管理 试题 深度 解析

题目:给出一段虚拟机栈和本地方法栈溢出的代码:分StackOverflowErrorOutOfMemoryError给出程序


JVM内存概要:




答案解析:


堆溢出:堆里放的是new出来的对象,所以这部分很简单不断的new对象就可以了,但是为了防止对象new出来之后被GC,所以把对象new出来的对象放到一个List中去即可。为了有更好的效果,可以在运行前,调整堆的参数。


针对HotSpot虚拟机中的栈溢出,如果请求的栈深度大于虚拟机所允许的最大深度,抛出StackOverflowError,如果虚拟机在扩展时无法申请到足够空间则抛出OutOfMemoryError的异常。容易想到在单线程的堆中我们不断的让一个成员变量自增,容纳这个变量的单元无法承受这个变量了,就抛出StackOverflowError了。这就是一个 请求的栈深度大于虚拟机所允许的最大深度。还有种情况,可以开尽量多的线程,并在每个线程里调用native的方法,就自然会抛出 OutOfMemoryError了。


运行时常量池溢出:运行时常量池是在方法区中的一部分,主要保存Class文件中描述的符号引用。可采用String类的intern方法。


方法区存放类的信息、常量、静态变量。这部分的溢出可采用增强Class加载的方式。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇深圳先创C++笔试题 下一篇在Shell环境下,如何查看远程Linux..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: