• java实例大全pdf > java实例:Java中知晓实例大小的方法
  • java实例:Java中知晓实例大小的方法

    免费下载 下载该文档 文档格式:PDF   更新时间:2010-05-01   下载次数:0   点击次数:1
    文档基本属性
    文档语言:
    文档格式:pdf
    文档作者:微软用户
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    java实例:Java中知晓实例大小的方法
    疯狂代码 http://CrazyCoder.cn/ :http:/CrazyCoder.cn/Java/Article6079.html 在C/C++中有sizeof()操作,可轻易获知某个类型或实例占用内存大小,sizeof(int)或者 sizeof(newTestClass).可是Java中可没有这么直观的方法可用. 因本人看过不少人写代码总爱写成 ListuserList=newArrayList();//注:声明时即初始化一个空ArrayList userList=userDao.getAllUsers();//注:方法getAllUsers()中会生成一个ArrayList的 上面就造成平白多了一个空的ArrayList(),创建完后即刻就推向GC处置,我就在想这样一个空的ArrayList会 占用多少内存,于是找来了Optimizeit观察后发现一个空的ArrayList要占去24b内存.那Java中有没有更便的 捷的方法呢,于是在网上google\"javasizeof\",引出不少话题. 但我觉得比较好的一段代码是java.sizeOf(http://sourceforge.net/projects/sizeof/),需要JDK1.5以上的版 本支持,由它测定的空ArrayList所占内存确也是24b.下载到SizeOf_0_2_src.zip(其中含SizeOf.jar,其实就一 个类SizeOf),假设解压到F:\\ComponentLibrary\\java\\javasizeof. 用法很简单,直接看它的README.txt文件就行,因为只有一个类,方法也不多,全是静态方法,可以使用 静态引入,看看就明白,只是现在的0.2版本推荐的方法是sizeOf()和deepSizeOf(),而不再是 iterativeSizeOf()的. 它还提供了一个测试代码TestSizeOf(可从中学习SizeOf的用法),在命令行下,进入到 F:\\ComponentLibrary\\java\\javasizeof目录,然后执行 F:\\ComponentLibrary\\java\\javasizeof>javajavaagent:SizeOf.jarnet.sourceforge.sizeof.test.TestSizeOf 显示结果是: JAVAGENT:callpremaininstrumentationforclassSizeOf Startingtest... simpleobj:40.0b int:0.0b long:0.0b char:0.0b double:16.0b boolean:0.0b Integer:0.0b
    emptystring:0.0b notemptystring:0.0b notemptystring:0.0b simpleobj:24.0b simpleobj:40.0b emptylist:24.0b 10list:24.0b 20listnostatic:24.0b 1000oarr:816.0b 应该会惊讶一下,为什么会出现那么多0.0b 为什么要用1.5以上版本的jdk,为什么不是用-classpath参数 ,而是-javaagent参数 我们不妨把javasizeof的src目录中源代码导入到eclipse中(相信大多数人都用这个的),可以看到源代码 TestSizeOf,把SizeOf.skipFlyweightObject(true)行注释掉,运行TestSizeOf. 不小心的话,你应该收到java.lang.IllegalStateException:Instrumentationisnull的异常,没错这个 SizeOf用到了JDK1.5后新加入的java.lang.instrument.Instrumentation接口,所以您需要为TestSizeOf设置 VMarguments [Page] -javaagent:\"F:\\ComponentLibrary\\java\\javasizeof\\SizeOf.jar\" (注意到在SizeOf.jar包中的META-INF\\MANIFEST.MF中有PremainClass:net.sourceforge.sizeof.SizeOf,这就是-javaagent:所在意的.指向SizeOf.jar的路径中有空格的话一定 要用双引号引起来) 运行后结果就是: JAVAGENT:callpremaininstrumentationforclassSizeOf Startingtest... simpleobj:40.0b int:16.0b long:16.0b char:16.0b double:16.0b boolean:16.0b Integer:16.0b

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • java开发实例pdf  java实例开发教程pdf  java范例开发大全pdf  手机pdf阅读器java  javapdf  java教程pdf  javaweb开发详解pdf  java书籍免费下载pdf  java从入门到精通pdf