自学,偶像...(看来不回答不行了 ....)
创新互联建站主营米林网站建设的网络公司,主营网站建设方案,App定制开发,米林h5微信平台小程序开发搭建,米林网站营销推广欢迎米林等地区企业咨询
其实内存都是操作系统分配的, 你可以把jvm想像成一个中间层运行环境(java程序运行的支持,就是一种支持..)就得了就像那种.net framwork 那样的东东. 不用太在意....
程序
|
jvm
|
操作系统
我楼上的都是正解:
引用楼上的话
当然。
把JVM看成是个中间层就可以,不止是内存分配,还有线程、网络连接等等,最终在底层都要靠操作系统来搞。
Java语言的设计思想,本来就是对C语言这种可以直接进行操作系统调用的语言的一种简化。引入了一个隔离层,让jvm来当个中介,以简化应用开发。让程序员集中精力于实现业务逻辑。
(修补下 准确的说是C++,不是C.....让jvm当中介
以实现跨平台.以...)
恩,楼上说的对,jvm就是连接java程序跟操作系统的中间层,程序用到的内存都是从这里分配得到的,而jvm的内存是从系统内存得到的。
可以使用对象的toString()方法,回返回一个字符串,字符串后半部分的哈希码就是唯一的。
toString
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:
该对象的字符串表示形式。
Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。
运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。
Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平台上。
在Java平台的结构中, 可以看出,Java虚拟机(JVM) 处在核心的位置,是程序与底层操作系统和硬件无关的关键。它的下方是移植接口,移植接口由两部分组成:适配器和Java操作系统, 其中依赖于平台的部分称为适配器;JVM 通过移植接口在具体的平台和操作系统上实现;在JVM 的上方是Java的基本类库和扩展类库以及它们的API, 利用Java API编写的应用程序(application) 和小程序(Java applet) 可以在任何Java平台上运行而无需考虑底层平台, 就是因为有Java虚拟机(JVM)实现了程序与操作系统的分离,从而实现了Java 的平台无关性。
JVM在它的生存周期中有一个明确的任务,那就是运行Java程序,因此当Java程序启动的时候,就产生JVM的一个实例;当程序运行结束的时候,该实例也跟着消失了。下面我们从JVM的体系结构和它的运行过程这两个方面来对它进行比较深入的研究。
1、Java虚拟机的体系结构
·每个JVM都有两种机制:
①类装载子系统:装载具有适合名称的类或接口
②执行引擎:负责执行包含在已装载的类或接口中的指令
·每个JVM都包含:
方法区、Java堆、Java栈、本地方法栈、指令计数器及其他隐含寄存器
2、Java代码编译和执行的整个过程
也正如前面所说,Java代码的编译和执行的整个过程大概是:开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。
(1)Java代码编译是由Java源码编译器来完成,也就是Java代码到JVM字节码(.class文件)的过程。
2)Java字节码的执行是由JVM执行引擎来完成
Java代码编译和执行的整个过程包含了以下三个重要的机制:
·Java源码编译机制
·类加载机制
·类执行机制
(1)Java源码编译机制
Java 源码编译由以下三个过程组成:
①分析和输入到符号表
②注解处理
③语义分析和生成class文件
最后生成的class文件由以下部分组成:
①结构信息:包括class文件格式版本号及各部分的数量与大小的信息
②元数据:对应于Java源码中声明与常量的信息。包含类/继承的超类/实现的接口的声明信息、域与方法声明信息和常量池
③方法信息:对应Java源码中语句和表达式对应的信息。包含字节码、异常处理器表、求值栈与局部变量区大小、求值栈的类型记录、调试符号信息
(2)类加载机制 JVM的类加载是通过ClassLoader及其子类来完成的
C,编译是把java文件编译为class文件,由编译器完成,jvm执行的是class文件,执行需要加载,校验,执行……
先要了解java的一个概念———虚拟机(Java Virtual Machine 简称JVM),他让java实现了跨平台。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。开发工具也都是通过jdk编译执行代码的。例如:myeclipse。
java web开发也是通过容器(比如tomcat)将java文件编译,再执行生成的代码,例如:tomcat,它会先将你编写的jsp文件中的java代码编译,编译后的class文件可以在tomcat的安装目录的work文件夹下找到。容器再执行这些功能性代码,再将结果导入到页面中去。