第一,当具体工厂类产生一个类时,首先要对该类进行装载,任何java程序都要运行在java虚拟机上,当二进制的类型数据被导入到java虚拟机中时,虚拟机将会进行验证、准备和解析及初始化各项工作。装载是把二进制形成的java类型读入java虚拟机、验证、准备和解析统称。其中验证是确认类型符合java语言的语义,并且它不会危及虚拟机的完整性。准备是java虚拟机为类变量分配的内存。设置默认初始值,但在到达初始化阶段之前,类变量都没有初始化为真正的初始值,解析是在类型的变量池中寻找类,接口,字段和方法的符号引用。把这些符号引用替换成直接引用的过程。为了准备让一个类或者接口被首次主动使用。最后一个步骤就初始化,也就是为类变量赋予程序员希望这个类变量所具备的初始值。可以说,到此为止,这一步,具体工厂类产生的类已经彻底转变成java虚拟机上的一分子,它的所有方法,属性等都已经成为了一个不可分割的整体第二,当开始运行时,每个java程序都有自己的堆空间,它们不会彼此干扰。对于堆的存在,这是由虚拟机自行决定,在这里会出现以下问题:如果系统关闭或重起,那么实例就会消失,所以在这里,对于经常需要的,可将一部分实例放在一个缓冲池里,根据队列来决定调用次序,对于不经常需要的,可将另一部分实例通过用户类自定义加载器加载,在容器加载前应将二进制的类型数据分类保存在一个“地方”,以后用户类自定义加载器根据相关列表加载保存的二进制的类型数据,这样可以保证关系不被破坏,又可确保效率,我在这里借鉴了Java在动态扩展上的思想;第三,当一个程序如果发生变化时,在同一个类中,与它协作的类将不断地变化,但是,回到“第一这个大问题”,我们可以看到,它们都已经彻底转变成java虚拟机上的一分子,不存在着A类实例原先需要B类实例协调,B类实例需要C类实例协调,现在B类实例由C类实例协调了,程序因为找不到原有关系而不能运行的情况,也就是说,只要需要的实例都存在,就不会发生以上问题;第四,一个类可以产生多个对象,每一个对象只调用与它相关的模块,一个对象对应一个地址。不同线程执行同一个方法时,会把同一个对象解析成该线程对象的实例变量。
解决方案 »
- 请教一下,关于设计访问论坛首页的问题。
- 高手帮我看看怎么封装下面的方法
- 问了好久,都没人能解决的算法问题,郁闷
- 关于TOMCAT的问题!菜鸟请教
- hibernate问题,这个类的映射文件应该怎么写(十万火急在线等答案)
- logic:presnt 使用有问题
- 请教各位大神,关于Java前端技术
- 100分求jexcelApi组件mail [email protected] 或者[email protected]
- TOMCAT有没有支持ECLIPSE3.0.1的插件,哪位大哥知道告诉小弟!在线等侍!!!谢谢!
- 请各位大哥帮忙!
- 讨论一个问题:怎样避免一个类在不断地变化中对它相关联的类产生不利影响
- 大窗口中如何嵌套一个小窗口?
<s:set name="error" value="#test" />
<s:if test="#error==null">
<jsp:forward page="result.action"> </jsp:forward>
</s:if>
错误:找不到result.action
HTTP Status 404 - /struts/result.action
/struts/result.action
The requested resource (/struts/result.action) is not available.
可是,我用下面的地址直接访问确成功了。不明白了,道低是怎么回事啊。
http://localhost:8080/struts/result.action 后来我发现:用 <jsp:forward>地址栏里还是http://localhost:8080/struts/result.jsp
可能问题出在这里了, <jsp:forward>跳转页面地址不变 但现在我想实现 我想要的功能,用拦截器好像不太好使,所以真的想不好的办法了烦死了。
帮忙想个办法吧。