java运行原理

有资深的java高手么,我想了解,java什么时候加载类,int double 类等等加载的时候是放在哪里的,比如堆栈,还有类里面的方法是存放在哪里的,是一开始就加载进内存呢,还是用到的时候再加载进内存呢?有没有相关的Pdf或者word等电子书,推荐一下,问得有点底层,谢谢回答啦

Java实在”虚拟机“上进行的编译和运行。
解释:在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode)(class文件的内容),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-22
一个类的加载运行举个例子:1.User u = new User();(存放在内存的堆区)

创建了一个User类实例,也就是说在声明该类的时候才会去加载这个类,实际上是通过这个类的CLASS实例实例化的。方法如下:

User u=(User)Class.forName("User").newInstance();

2.u.setName("admin"); u.setPwd("159");(存放在内存的栈区)

调用该类的方法,为该类的变量赋值,Java虚拟机内部调用是这样的,通过方法区找到该方法,所以那些类型、方法、变量、常量什么的都放在这个方法区中

3.String name = u.getName(); String pwd = u.getPwd();

与第二步类似,不同的是将取得的值分别赋给了变量name和pwd。关键是这个值保存在哪里?和实例对象一样,存放在堆区。这个时候应该可以看出CLASS实例的作用了,它就是起个中间作用,将程序中的调用反应到堆区上数据的变化。

我也有点模糊 个人观点不喜勿喷 有错请指出
至于相关电子书这个我觉得可以去看看官方的文档比较好 在加上自己的理解、操作本回答被网友采纳
第2个回答  2014-03-22
int double等数据类型,当你定义变量的时候已经分配好内存了,类里面的方法在你的类里面,当你要用类面的方法时,只需在main方法中通过实例化类直接调用就可以了,PDF可以在网上下载JAVA基础讲解,就是JAVA编程思想,这个网上免费很多的
第3个回答  2014-03-22
JVM相关的书,另外一门语言.java底层实现大部分为C写的.堆就是内存,栈只是临时存放的一般貌似为64M,由java的垃圾回收机制维护
第4个回答  2014-03-22
这个你去看毕向东的那个面向对象,他讲的特别详细。一定会懂的,我给你个飞机票。
你从第5天看。你下载一下。就是成员变量和局部变量的加载过程啊,类的初始化过程等!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网