Java每条代码由谁执行 java中的程序代码都必须( 三 )


一旦对象使用完毕,便将其回收到堆中 。
在Java语言中 , 除了new语句外没有其他方法为一对象申请和释放内存 。
对内存进行释放和回收的工作是由Java运行系统承担的 。
这允许Java运行系统的设计者自己决定碎片回收的方法 。
在SUN公司开发的Java解释器和HotJava环境中,碎片回收用后台线程的方式来执行 。
这不但为运行系统提供了良好的性能,而且使程序设计人员摆脱了自己控制内存使用的风险 。
2.5JVM存储区
JVM有两类存储区:常量缓冲池和方法区 。
常量缓冲池用于存储类名称、方法和字段名称以及串常量 。
方法区则用于存储Java方法的字节码 。
对于这两种存储区域具体实现方式在JVM规格中没有明确规定 。
这使得Java应用程序的存储布局必须在运行过程中确定,依赖于具体平台的实现方式 。
JVM是为Java字节码定义的一种独立于具体平台的规格描述,是Java平 *** 立性的基础 。
目前的JVM还存在一些限制和不足,有待于进一步的完善,但无论如何,JVM的思想是成功的 。
对比分析:如果把Java原程序想象成我们的C++原程序,Java原程序编译后生成的字节码就相当于C++原程序编译后的80x86的机器码(二进制程序文件),JVM虚拟机相当于80x86计算机系统,Java解释器相当于80x86CPU 。
在80x86CPU上运行的是机器码,在Java解释器上运行的是Java字节码 。
Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通过硬件实现的,而是用软件实现的 。
Java解释器实际上就是特定的平台下的一个应用程序 。
只要实现了特定平台下的解释器程序 , Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本 。
当前,并不是在所有的平台下都有相应Java解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行 。
Java字节码的执行是由什么完成的?Java字节码Java每条代码由谁执行的执行需要经过以下3个步骤Java每条代码由谁执行:
(1)由类装载器(class loader)负责把类文件(.class文件)加载到Java虚拟机中 。在此过程需要检验该类文件是否符合类文件规范 。
(2)字节码校验器(bytecode verifier)检查该类文件的代码中是否存在着某些非法操作Java每条代码由谁执行,例如Applet程序中写本地计算机文件系统的操作 。
(3)如果字节码校验器检验通过Java每条代码由谁执行,由Java解释器负责把该类文件解释成为机器码进行执行 。
jsp里的java代码是在前台执行还是后台执行?后台执行 。
JSP的工作原理 。
(1)当用户访问一个JSP页面时,回想一个Servlet容器(Tomcat)发出请求;
(2)如果是第一次请求页面 , 或页面有所改动,则servlet容器首先要把JSP页面(假设为test.jsp)转化为Servlet代码(test.java),再将其转化为(test.class文件);
(3)JSP容器负责调用从JSP转换来的servlet,这些servlet负责提供服务相应用户请求(比如客户端发送表单,要求servlet:formprocessor.java来处理,则容器会建立一个线程,调用formprocessor.java来处理该请求);如果用户有多个请求,则容器会建立多个线程处理多个请求;
(4)容器执行字节码文件(包括调用的servlet:formprocessor.java字节吗),并将其结果返回到客户端;(返回的最终方式是有servlet输出html格式的文件流)
所以java的代码编译都是后台编译执行的 。
java中,负责对字节代码解释执行的是?java中负责对字节代码解释执行的是虚拟机,虚拟机将得到的字节代码进行编码运行 。

推荐阅读