关于JVM的几道面试题
2019独角兽企业重金招聘Python工程师标准>>>
之前看编程之美,看到了对操作系统精通的定义,比如,写个程序能到任务管理器的CPU曲线划出一段正弦曲线,这种实际的动手能力确实值得我们去关注。
刚刚在看书,关于虚拟机规则的,突然想到可以出如下面试题:
- 给出一段会产生堆内存溢出的代码;
- 给出一段虚拟机栈和本地方法栈溢出的代码:分StackOverflowError和OutOfMemoryError给出程序;
- 给出一段能使运行时常量池溢出的代码;
- 给出一段能使方法区溢出的代码。
这些题目不仅考察了对Java内存分配的理解,更从实际操作上去处理内存的问题。理解好了这一类题目,有利于异常的纠错和系统的调优。
华丽的分割线----------------------------------------------------------------------
下面给出一些思路,其实主要还是给出第二题的思路.
- 堆溢出:堆里放的是new出来的对象,所以这部分很简单不断的new对象就可以了,但是为了防止对象new出来之后被GC,所以把对象new出来的对象放到一个List中去即可。为了有更好的效果,可以在运行前,调整堆的参数。
- 针对HotSpot虚拟机中的栈溢出,如果请求的栈深度大于虚拟机所允许的最大深度,抛出StackOverflowError,如果虚拟机在扩展时无法申请到足够空间则抛出OutOfMemoryError的异常。容易想到在单线程的堆中我们不断的让一个成员变量自增,容纳这个变量的单元无法承受这个变量了,就抛出StackOverflowError了。这就是一个 请求的栈深度大于虚拟机所允许的最大深度。还有种情况,可以开尽量多的线程,并在每个线程里调用native的方法,就自然会抛出 OutOfMemoryError了。
- 运行时常量池溢出:运行时常量池是在方法区中的一部分,主要保存Class文件中描述的符号引用。可采用String类的intern方法。
- 方法区存放类的信息、常量、静态变量。这部分的溢出可采用增强Class加载的方式。
转载于:https://my.oschina.net/ielts0909/blog/81281
关于JVM的几道面试题相关推荐
- Java并发编程71道面试题及答案
Java并发编程71道面试题及答案 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方 ...
- 如图两道面试题,顺便深入线程池,并连环17问
这两面试题是基友朋友最近去面滴滴遇到的,今天就借着这两面试真题来深入一波线程池吧,这篇文章力求把线程池核心点和常问的面试点一网打尽,当然个人能力有限,可能会有遗漏,欢迎留言补充! 先把问题列出来,如果 ...
- Java并发编程75道面试题及答案
1.在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User).任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bo ...
- Java中创建String的两道面试题及详解
转载自 Java中创建String的两道面试题及详解 我们知道创建一个String类型的变量一般有以下两种方法: String str1 = "abcd";String str2 ...
- ASP.NET 经典60道面试题
转:http://bbs.chinaunix.net/thread-4065577-1-1.html ASP.NET 经典60道面试题 1. 简述 private. protected. public ...
- 用大约 10 万字的内容对 Java 的核心知识点和常见的 1000 多道面试题,做了详细的介绍
每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...
- Java 208道面试题及部分答案
Java 208道面试题及部分答案 一.Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库.是使用java语言编写的程序运行所 ...
- 2道面试题:输入URL按回车HTTP2
通过几轮面试,我发现真正那种问答的技术面,写一堆项目真不如去刷技术文章作用大,因此刷了一段时间的博客和掘金,整理下曾经被问到的2道面试题 从浏览器输入URL按回车到页面显示都发生了什么 说说你了解的H ...
- python基础知识面试题-深入解答关于Python的11道基本面试题
前言 本文给大家深入的解答了关于Python的11道基本面试题,通过这些面试题大家能对python进一步的了解和学习,下面话不多说,来看看详细的介绍吧. 一.单引号,双引号,三引号的区别 分别阐述3种 ...
最新文章
- java 购物车价格类型_WooCommerce - 为购物车中的每个产品添加自定义价格
- 用大数据分析顾客会掏钱买你哪件商品
- JZOJ 3804. 【NOIP2014模拟8.24】小X 的AK 计划
- 如何在移动设备上以开发模式访问SAP Spartacus
- linux 之 getopt_long()
- Visual Studio“Orcas”October 2006 CTP版下载
- 【福利】周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题...
- 澳国立计算机录取分数,澳洲出国:2018年澳洲国立大学对高考成绩的本科录取分数线(多图)...
- angualr Material Icons
- oracle 11g 延迟验证,取消 11G延迟密码验证
- C++判断一个序列是否为堆(最大堆、最小堆)
- selenium+log4j+eclipse相关问题及解决方案
- MAC编译OpenJDK8:详细步骤及问题解决办法(含独家解决办法)
- oracle数据库下载地址
- OSPF路由协议实验配置命令
- ESP8266/ESP32 驱动ST7789屏幕
- linux音频设备接口,OSS--跨平台的音频接口简介
- Mac mini 2018 win10 外接显卡终极教程
- 小程序全局拖动悬浮球插件
- OpenCV图象孔洞内轮廓填充