知识大全 讨论关于Java占用内存的研究[1]

Posted 指针

篇首语:知识是产生对人类自由的热爱和原则的唯一源泉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 讨论关于Java占用内存的研究[1]相关的知识,希望对你有一定的参考价值。

Java进阶:讨论关于Java占用内存的研究[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近对程序占用内存方面做了一些优化 取得了不错的效果 总结了一些经验

  简要说一下 相信会对大家写出优质的程序有所帮助

  下面的论述针对 位系统 对 位系统不适用 后叙经常你写了一个程序 一测试 功能没问题 一看内存占用也不多 就不去考虑其它的东西了 但可能程序使用了一个什么数据结构 会当数据规模变大时 内存占用激增

  基本&&关键的问题是 Java里各种东东占多少内存?

  对于primitive类型 有 个 byte short int long float double char boolean 它们的长度分别是

  这个不罗嗦了 举例来说

  long[] data=new long[ ];

  占用内存 * bytes

  此外 data本身是一个Object 也占用内存若干 后叙 当然它针对 * 来说 忽略不计 再说Object的占用 在说这个之前 先说说引用 一惯的说法是Java里没有指针了 只有引用 引用是安全的

  这个说法没错 但是从机理上来说 引用就是指针 只是jvm对指针的使用检查和限制很多 这个引用/指针变得很安全

   直接来结论 一个引用占 byte 在 位系统上

  Object obj=null; // byte  Object[] objs=new Object[ ]; //至少 * byte

  你看我定义了一个 obj 还是null 就占 byte

  定义了一个 objs 个元素 但都是null啊 就都每个占 byte

  虽然obj==null 但它已经是 一个引用 或者说一个指针了

  指针也要占地方

  接下来 直接给另一个结论 Object占 byte 注意 纯Object

  Object obj=new Object(); //多少????

   byte?? 错!! byte 忘了还有一个引用 byte是Object的内容

  记住 Object obj=new Object(); 占 byte

  Object[] objs=new Object[ ];  for(int i= ;i< ;i++)   objs[i]=new Object();  

  至少占用 * bytes

  推论 Object占 bytes 似乎和上面的结论矛盾??!!

  没有!! 不管Object 没有被垃圾回收之前 总得被别人引用吧?总的有指针指它吧? 既然指 那个引用or指针就要占地方啊 byte 加起来是 byte 反正一个Object至少 bytes 还是直接给结论 推导的过程我就都包办了 咱不是脏活累活抢著干么!!

  一个Integer占 bytes

  这时您可能会有疑问 Integer=Object+int 就是

  public class Integer   public int value;  

  Integer应该占 + = bytes啊

  你说的有道理 但是jvm对所有的Object有限制!这个限制被我发现了 就是不管什么Object占的空间 要是 的倍数 不是 的倍数 只能是 了!

  推论 Byte也占 bytes!

  问 Byte[] bytes=new Byte[ ];占用空间多少?

  答 约为(至少为) ( + )* bytes

  论题 数组空间占用怎么算?

  我这里直接给结论了 推导这个花了更长的时间 对于数组来说 数组这个Object有一个length属性 数组的元素相当于其成员

  public class Array   public int length;  // 其它成员  

cha138/Article/program/Java/hx/201311/27226

相关参考

知识大全 Java常规类型占用内存大小

Java常规类型占用内存大小  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  byte(字节型) 

知识大全 如何计算java对象占用的内存

  Java有一个很好的地方就是java的垃圾收集机制这个机制集成于jvm的对程序员来说是隐藏且不透明的这种情况下如何得到某个对象消耗的内存呢?      曾经看到过有人用以下方法来计算在生成该obj

知识大全 关于MSSQL占用过多内存的问题

关于MSSQL占用过多内存的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  经常看见有人问M

知识大全 关于设置Java虚拟机(JVM)的内存问题

关于设置Java虚拟机(JVM)的内存问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近做

知识大全 SQL Server执行SQL语句时内存占用特点[1]

SQLServer执行SQL语句时内存占用特点[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 SQL Server占用内存的解决方法

SQLServer占用内存的解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  经常有网友会

知识大全 减少.NET应用程序内存占用的一则实践

减少.NET应用程序内存占用的一则实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近一周比

知识大全 SQL Server执行SQL语句时内存占用特点[3]

SQLServer执行SQL语句时内存占用特点[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 SQL Server执行SQL语句时内存占用特点[4]

SQLServer执行SQL语句时内存占用特点[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 SQL Server执行SQL语句时内存占用特点[2]

SQLServer执行SQL语句时内存占用特点[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!