对《java程序员上班那点事》笔者对数组占用内存质疑
1.《java程序员上班那点事》笔者对数组占用内存的描述
2.实际测试情况:
/*** 测试一维数组占用内存*/public static void testOneArray() {System.out.println("当前虚拟机的最大内存:" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "m------" + Runtime.getRuntime().maxMemory() + "byte");System.out.println("循环前虚拟机已占内存:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory() + "byte");try {int len = 1024 * 1024 * 300;// 设定循环次数byte[] buffer = new byte[len];for (int i = 0; i < len; i++) {buffer[i] = (byte) i;}System.out.println("循环前虚拟机已占内存:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory() + "byte");} catch (Error e) {System.out.println("遇到错误:" + e);}/** 测试结果:当前虚拟机的最大内存:793m------832438272byte 循环前虚拟机已占内存:127m====133234688byte 循环前虚拟机已占内存:427m====447877120byte*/}/*** 测试二维数组占用内存*/public static void testTowArray() {System.out.println("当前虚拟机的最大内存:" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "m------" + Runtime.getRuntime().maxMemory() + "byte");System.out.println("循环前虚拟机已占内存:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory() + "byte");try {int len = 1024 * 1024;// 设定循环次数byte[][] buffer = new byte[len][300];for (int i = 0; i < len; i++) {buffer[i][0] = (byte) i;buffer[i][1] = (byte) i;}System.out.println("循环前虚拟机已占内存:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory() + "byte");} catch (Error e) {System.out.println("遇到错误:" + e);}/** 测试结果:当前虚拟机的最大内存:793m------832438272byte循环前虚拟机已占内存:127m====133234688byte循环前虚拟机已占内存:398m====417398784byte*/
}
分析:个人认为,上面前辈的测试没有在循环直接输出以下jvm已占用的内存;对比我这次的测试,如果用循环之后的减去循环之前的占用的内存推翻了那位前辈的理论,正好相反,对于哪一种是正确的,有待大家的考证?!
对《java程序员上班那点事》笔者对数组占用内存质疑相关推荐
- 程序员应该知道的——《Java程序员上班那点事儿》精华
(written in 2010-03-31 19:52:19 ) 两个星期之前我就已经把钟声写的<Java程序员上班那点事儿>看完了,但是因为最近迷上了玩一个让我不长进的游戏,所以一直没 ...
- 推荐一本好书《 Java程序员 上班那点事儿》
Java程序员 上班那点事儿 阅读之后 明白上班那点事儿 如果你没事 就看看上班那点事儿 让你明白上班不是事儿 送上试读地址:Java程序员 上班那点事儿
- Java程序员上班“划水”向阿里猛投简历,两次被刷后,最终敲定“菜鸟网络”的岗位,定级P6.
概述 怀揣着对大厂的梦想,程序员小王本想在工作两至三年的时间内能进入大厂,奈何竞争是如此激烈.而且进入大厂并不容易,曾经一度被腾讯.京东.美团等大厂刷下来,甚至有些公司连面试机会都没给.今年恰好趁着疫 ...
- centos java程序_刚得到一台centos7服务器,作为Java程序员应该做的事
1.JDK的卸载安装 卸载掉服务器本来的OPENJDK,安装ORELOC的JDK 检查是否已经安装了jdk rpm -qa | grep jdk 如果有的话,就卸载了再装 rpm -e --nodep ...
- java程序员学习前了解的主要大纲
程序员首先学习应该先下载一系列学习辅助软件:有道云笔记 思维导图freemind(先安装JDK) 火狐(安装火狐需要安装插件firebug) 它能 更好地帮助 ...
- JAVA程序员笔试面试题汇总及答案 .
1.面向对象的特征有哪些方面 (1)抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只 是选择其中的一部分,暂时不用部分细节. ...
- Java程序员面试宝典
第1部分 求职过程 古人云:凡事预则立,不预则废.机会都是垂青有准备的人的.为了得到一份满意的工作,大家一定要对整个求职过程有清醒的了解.把能够预见的.必须做的事情早一些做完,这样在大规模招聘开始的 ...
- 收录Java程序员常用英语
Java程序员常用英语 基础----进阶 A. array数组accessible 可存取的 area面积audio 音频 addition 加法 action 行动 arithmetic ...
- JAVA程序员笔试面试题汇总及答案
1.面向对象的特征有哪些方面 (1)抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只 是选择其中的一部分,暂时不用部分细节. ...
最新文章
- 剑指offer:面试题26. 树的子结构
- 【Java】时间复杂度 与 空间复杂度
- python自学路线-Python最佳学习路线
- LoadRunner常见问题整理
- Uniform String
- Android开发之快捷键Google官方版本包含Mac版本
- matlab 传感器的迟滞,MATLAB PI迟滞模型问题
- Ubuntu将python2.7默认更改为python3.X版本
- 【转载】 C#使用Newtonsoft.Json组件来反序列化字符串为对象
- jQuery 的 ajax 请求方法
- Ubuntu虚拟机如何与主机复制粘贴?
- python和c 情侣网名_带符号的qq情侣网名 好听的情侣网名大全
- 第十章:Archiving
- 今晚直播,你该了解的MySQL 8.0 SQL优化新特性
- linux+gunzip解压命令,Linux gunzip命令解析 gunzip解压文件的方法
- 数据平台专题会议第3天亮点
- uniapp 浙政钉埋点——小程序
- 电压调整率--电流调整率--纹波电压--电源效率--功率因素
- Steinberg Nuendo 4 v4.3 PC 中文完整版+精简版音频后期制作软件
- 关于PageInfo的total属性得到的值等于当前页记录数
热门文章
- IKBC键盘win键失灵解决方法
- Android短信开发 发送彩信 ‘ 高通源码 ‘ (彩信发送过程1)
- 【Python入门】5-1 条件判断 if、if-else、if-elif-else
- google浏览器打开不久自动退出
- 亚马逊入驻商用户画像分析
- arcgis中导入excel数据时显示没有注册类怎么解决?
- 怎样用计算机打出错字,电脑键盘打字错乱的解决方法-电脑打不出字怎么办
- hdmi接口有什么用_显示器有哪些接口?DP、HDMI、VGA、DVI有什么区别?
- PPT手写笔颜色修改
- 网站建设制作需要多少钱呢?费用是多少?