这是一个关于java的垃圾回收机制的题目。垃圾回收主要针对的是堆区的回收,因为栈区的内存是随着线程而释放的。堆区分为三个区:年轻代(Young Generation)、年老代(Old Generation)、永久代(Permanent Generation,使用永久代来实现方法区)jdk1.7及以后,常量池逐步从永久代中移出,在堆内另外开辟了一块空间。

年轻代:对象被创建时(new)的对象通常被放在Young(除了一些占据内存比较大的对象),经过一定的Minor GC(针对年轻代的内存回收)还活着的对象会被移动到年老代(一些具体的移动细节省略)。

年老代:就是上述年轻代移动过来的和一些比较大的对象。Minor GC(FullGC)是针对年老代的回收

永久代:存储的是final常量,static变量,常量池。

str3,str4都是直接new的对象,而substring的源代码其实也是new一个string对象返回,如下图:

经过fullgc之后,年老区的内存回收,则年轻区的占了15个,不算PermGen。所以答案选C

常量池是介于栈和堆外的另一种独立的内存管理空间,相同内容常量池中永远只有一份,基本数据类型、对象的引用都存在栈中,执行速度快,包装类型,对象存储,new出来的对象都是存储在堆中,Byte,Short,Integer,Long,Character这5种整型的包装类只是在对应值小于等于127时才可使用对象池。超过了就会堆内创建新对象,所有才会出现上述情况,而String是个较为特殊的包装类型,直接用=“”创建的数据是存放在常量池,且无论数据大小都不会申请空间创建,除非使用new关键字。

c语言会出现fullgc,以上述代码为基础,在发生过一次FullGC后,上述代码在He相关推荐

  1. VC代码的编写和调试---编写易于调试的VC代码

    转自:http://www.vcgood.com/forum_posts.asp?TID=1692&PN=1 一 程序的设计 要避免错误,首先要从好的设计开始.对于程序的设计,需考虑到程序的两 ...

  2. c语言编程工具栏没有了,2009计算机二级C语言:工具栏,可拖动,并在被隐藏的地方显示的实现代码...

    2009计算机二级C语言:工具栏,可拖动,并在被隐藏的地方显示的实现代码 分类:计算机等级 | 更新时间:2016-07-07| 来源:中华网考试 1.在Toolbar资源中新建一个工具栏IDR_TO ...

  3. 【初级C语言】代码版式(空行,空格,对齐,长行代码,注释)

    .空行 1. 空行起着分隔程序段落的作用,空行会在预编译阶段被删除不会浪费内存,请放心使用! 2. 每个函数定义结束之后都要加空行 3. 在一个函数体内,逻揖上密切相关的语句之间不加空行(如if-el ...

  4. python登录代码思路_用python登录Dr.com思路以及代码分享

    用python登录Dr.com思路以及代码分享 发布于 2014-08-28 22:31:52 | 192 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...

  5. OpenAI数十亿代码训出Codex:能将英语翻译成代码,给四句话就能写个神经网络...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:大数据文摘本文约2088字,建议阅读4分钟 本文介绍了Open ...

  6. eclipse java代码某一行需要修改注释_看看这些Java代码开发规范吧!你好,我好,大家好!...

    作为一名开发人员,当你接手他人的项目时,且当你阅读他人的代码时,是有没有遇到脑袋充血,感觉Java要把你"送走"的感觉呢?我们在用Java开发技术进行开发前,一定要牢牢恪守Java ...

  7. vba遍历数组_VBA代码解决方案的第59讲内容:如何在代码运行时创建数组

    大家好,我们今日继续讲解VBA代码解决方案的第59讲内容:如何在代码运行时创建数组 .数组大家并不陌生,在之前我讲过很多了,估计详细阐述数组的只有我这个平台可以找到了,今日讲的是在VBA中代码运行的时 ...

  8. 代码命名,代码里的命名规则:错误的和正确的对比 命名方法总结 “自我描述的源代码”用代码表达出你的思想,让其他人通过代码能明白你的意图。...

    http://www.aqee.net/express-names-in-code-bad-vs-clean/ 编程初学者总是把大量的时间用在学习编程语言,语法,技巧和编程工具的使用上.他们认为,如果 ...

  9. java 编写代码_如果您在2016年编写过Java代码-这是您不容错过的趋势

    java 编写代码 2016年最有趣的Java相关主题 关于代码,有很多热门话题,而要跟上所有事情,这是一项全职的工作. 如果您想知道如何从谷壳中分离出小麦,我们已经为您完成了工作. 在下面的文章中, ...

  10. java 编写代码_Java 7:如何编写非常快速的Java代码

    java 编写代码 当我第一次写此博客时,我的目的是向您介绍ThreadLocalRandom类,它是Java 7中新增的用于生成随机数的类. 我在一系列微基准测试中分析了ThreadLocalRan ...

最新文章

  1. Servlet(1)
  2. 机器学习知识点(二十八)Beta分布和Dirichlet分布理解
  3. 树莓派云音乐c语言,基于树莓派的红外遥控版网易云音乐播放器
  4. 计算机一级专题训练,计算机等级考试一级MSOFFICE综合训练试题
  5. Linux下C++静态库、动态库的制作与使用
  6. php+nginx环境下的php报错设置
  7. perl linux 独立运行,Perl脚本打包为独立执行程序
  8. ASCII 码表对照 2
  9. 三菱伺服自动调谐_三菱伺服参数设置调试软件MR Configurator2 Ver 1.70Y
  10. ado控件连接mysql_VB利用ADO控件连接access数据库
  11. 元胞自动机及其MATLAB实例
  12. H5页面内实现分享给微信好友功能
  13. java opencv 模板匹配算法_opencv 模板匹配
  14. winform做的单机登录界面和账号注册界面
  15. hdu 4607 Park Visit(树上最长链)
  16. 从软件工程师到IT猎头续:告诉你如何写简历
  17. ANGULAR之中的$STATE、 $WATCH、 $SCOPE、 $ROOTSCOPE 分别是什么?
  18. 瓶子破碎的最高安全楼层
  19. 麦克米伦高阶词典 7500词汇表 红星
  20. 当财务部的人会编程,会发生什么?Python实现自动化群发工资条

热门文章

  1. 一些常用的dos命令
  2. Python进阶:切片的误区与高级用法
  3. 浅谈网络协议(一) 为什么要学网络协议
  4. [转]hibernate------HQL总结
  5. cocos2dx多线程以及线程同步 与 cocos2dx内存管理与多线程问题
  6. IDC公司:服务器类微处理器市场最新预测
  7. Windows之建立C++开发环境
  8. 3——PHP 简单运算符的使用
  9. Oracle 9i学习日志(9)--数据字典与动态性能视图及练习
  10. linux top命令增强版 htop简介