来看Eclipse的字符串分区共享优化机制
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。在Java/C#如许基于援用语义处置字符串的言语中,作为不成变对象存在的字符串,假如内容不异,则能够经由过程某种机制完成重用。由于对这类言语来讲,指向内存中两块内存地位分歧内容不异的字符串,与同时指向一个字符串并没有任何区分。出格是对大批利用字符串的XML文件剖析相似场所,如许的优化可以很年夜水平上下降程序的内存占用,如SAX剖析引擎尺度中就专门界说了一个http://xml.org/sax/features/string-interning特征用于字符串重用。
在言语层面,Java/C#中都间接供应了String.Intern的撑持。而对Java来讲,完成上的十分相似。由String.intern办法,将以后字符串之内容为键,对象援用为值,放进一个全局性的哈希表中。
代码:
//
//java/lang/String.java
//
publicfinalclassString
{
//...
publicnativeStringintern();//利用JNI函数完成以保证效力
}
//
//hotspot/src/share/vm/prims/jvm.cpp
//
JVM_ENTRY(jstring,JVM_InternString(JNIEnv*env,jstringstr))
JVMWrapper("JVM_InternString");
if(str==NULL)returnNULL;
oopstring=JNIHandles::resolve_non_null(str);//将援用剖析为外部句柄
oopresult=StringTable::intern(string,CHECK_0);//举行实践的字符串intern操纵
return(jstring)JNIHandles::make_local(env,result);//猎取外部句柄的援用
JVM_END
//
//hotspot/src/share/vm/memory/symbolTable.cpp
//
oopStringTable::intern(oopstring,TRAPS)
{
if(string==NULL)returnNULL;
ResourceMarkrm(THREAD);//回护线程资本地区
intlength;
Handleh_string(THREAD,string);
jchar*chars=java_lang_String::as_unicode_string(string,length);//猎取实践字符串内容
oopresult=intern(h_string,chars,length,CHECK_0);//完成字符串intern操纵
returnresult;
}
oopStringTable::intern(Handlestring_or_null,jchar*name,intlen,TRAPS)
{
inthashValue=hash_string(name,len);//起首依据字符串内容盘算哈希值
stringTableBucket*bucket=bucketFor(hashValue);//依据哈希值猎取方针容器
oopstring=bucket->lookup(name,len);//然后检拆字符串是不是已存在
//Found
if(string!=NULL)returnstring;
//Otherwise,addtosymboltotable
returnbasic_add(string_or_null,name,len,hashValue,CHECK_0);//将字符串放进哈希表
}
<p>
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种突破用户端机器环境和CPU 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
页:
[1]