仓酷云

标题: 了解下JAVA的JVM调优总结(二)-一些观点 [打印本页]

作者: 愤怒的大鸟    时间: 2015-1-18 11:16
标题: 了解下JAVA的JVM调优总结(二)-一些观点
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。
Java对象的巨细
基础数据的范例的巨细是流动的,这里就未几说了。关于非基础范例的Java对象,其巨细就值得商讨。
在Java中,一个空Object对象的巨细是8byte,这个巨细只是保留堆中一个没有任何属性的对象的巨细。看上面语句:
Object ob = new Object();
如许在程序中完成了一个Java对象的性命,可是它所占的空间为:4byte+8byte。4byte是下面部分所说的Java栈中保留援用的所必要的空间。而那8byte则是Java堆中对象的信息。由于一切的Java非基础范例的对象都必要默许承继Object对象,因而不管甚么样的Java对象,其巨细都必需是年夜于8byte。
有了Object对象的巨细,我们就能够盘算其他对象的巨细了。
Class NewObject {
    int count;
    boolean flag;
    Object ob;
}
其巨细为:空对象巨细(8byte)+int巨细(4byte)+Boolean巨细(1byte)+空Object援用的巨细(4byte)=17byte。可是由于Java在对对象内存分派时都是以8的整数倍来分,因而年夜于17byte的最靠近8的整数倍的是24,因而此对象的巨细为24byte。
这里必要注重一下基础范例的包装范例的巨细。由于这类包装范例已成为对象了,因而必要把他们作为对象来对待。包装范例的巨细最少是12byte(声明一个空Object最少必要的空间),并且12byte没有包括任何无效信息,同时,由于Java对象巨细是8的整数倍,因而一个基础范例包装类的巨细最少是16byte。这个内存占用是很可怕的,它是利用基础范例的N倍(N>2),有些范例的内存占用更是夸大(任意想下就晓得了)。因而,大概的话应只管少利用包装类。在JDK5.0今后,由于到场了主动范例装换,因而,Java假造时机在存储方面举行响应的优化。
援用范例
对象援用范例分为强援用、软援用、弱援用和虚援用。
强援用:就是我们一样平常声明对象是时假造机天生的援用,强援用情况下,渣滓接纳时必要严厉判别以后对象是不是被强援用,假如被强援用,则不会被渣滓接纳
软援用:软援用一样平常被做为缓存来利用。与强援用的区分是,软援用在渣滓接纳时,假造时机依据以后体系的残剩内存来决意是不是对软援用举行接纳。假如残剩内存对照严重,则假造时机接纳软援用所援用的空间;假如残剩内存绝对充裕,则不会举行接纳。换句话说,假造机在产生OutOfMemory时,一定是没有软援用存在的。
弱援用:弱援用与软援用相似,都是作为缓存来利用。但与软援用分歧,弱援用在举行渣滓接纳时,是必定会被接纳失落的,因而其性命周期只存在于一个渣滓接纳周期内。
强援用不必说,我们体系一样平常在利用时都是用的强援用。而“软援用”和“弱援用”对照少见。他们一样平常被作为缓存利用,并且通常为在内存巨细对照受限的情形下做为缓存。由于假如内存充足年夜的话,能够间接利用强援用作为缓存便可,同时可控性更高。因此,他们罕见的是被利用在桌面使用体系的缓存。

而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践!
作者: 小女巫    时间: 2015-1-29 16:00
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 因胸联盟    时间: 2015-1-31 16:43
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 爱飞    时间: 2015-2-2 22:33
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 只想知道    时间: 2015-2-3 12:41
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 飘灵儿    时间: 2015-2-4 21:24
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 冷月葬花魂    时间: 2015-2-6 12:49
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者: 老尸    时间: 2015-2-13 05:58
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 兰色精灵    时间: 2015-2-22 22:45
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 变相怪杰    时间: 2015-3-4 05:03
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 若天明    时间: 2015-3-8 00:26
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 金色的骷髅    时间: 2015-3-11 19:47
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 海妖    时间: 2015-3-19 10:25
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 再现理想    时间: 2015-3-27 19:09
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2