中国第八军团
新手报道 :
新兵宿舍
求助问答 :
悬赏问答
技术探讨 :
网络安全
敲敲代码 :
编程开发
资源分享 :
资源下载
论坛生活 :
军团茶座
站务管理 :
论坛版务
主题:1690 回帖:16933 会员:1264 在线:1
发新帖

[java]初步理解JVM与环境变量配置常见问题

blackflame 2017-3-6 564
JVM原理流程:

1、jvm虚拟机


a)Java文件经过javac编译成为字节码文件以后,被类加载器加载到运行数据内存区域,然后执行引擎转化成平台相关的机器码。

b)运行数据内存区域有六大块,PC寄存器,java栈,本地方法栈,常量池,java堆,方法区域这六大块。前面3各区域(PC寄存器、

Java栈、本地方法栈)是每个线程独自拥有的,后三者则是整个JVM实例中的所有线程共有的

c)Java栈:存储都是局部变量。

d)Java堆:存放的是程序创建的对象或者实例。


环境变量配置常见问题:

1.JDK:包括jre和开发工具。



2.JRE(Java运行环境):包括Java虚拟机(JVM)和核心类库。



3.临时配置环境:把class文件位置赋予到新建的一个classpath,然后可以直接Java demo.clas

例如:

C:appdemo.class

set classpath=C:app



java demo


4.Java虚拟机首先寻找classpath路径,如果没有配置classpath变量,则从当前目录找。


例如:


在两个不同路径下有着相同文件名的文件。。。虚拟机首先运行classpath变量中的路径文件。


5.当配置classpath的值后没有分号时,路径中的文件不存在,而当前目录却又相同文件名,虚拟机依然不运行当前目录下

的文件,而是会报错。这进一步证明了,配置classpath后,虚拟机必定运行classpath下的文件


例如:

set classpath=c:app


当set classpath=c:app;时,在设置路径下没有该文件时,会再次寻找当前目录下有没有该文件


6.另类的路径变量设置:


classpath=.;C:app 代表先找当前目录,然后再找classpath路径下文件。


而之所以c:app;会再次寻找当前目录,是因为;后面其实是;.代表先找路径,再找当前目录


7.常见问题:


当目录下明明有文件,而运行报错时却说无法加载类时,可能是配置过了classpath,并且是没有分号的那种。
最新回复 (1)
程小诺 2017-3-18
1
我去,为啥有这么多帖!
返回



©1999-2017 第八军团
Time: 0.018, SQL: 9