JVM-java内存

Time:2015/04/20 01:24:42   Click:

    续 JVM(java 虚拟机)一  这里继续对java做深入的理解。
    从(一)中说明了JVM就等同于操作系统,我们在学习操作系统的时候就会理解内存,那么JVM也有内存处理吗?
    其实每个单独java程序都会启动一个JVM,同时也指定JVM的内存大小,所以如果程序太大,就会报错“java.lang.OutOfMemoryError”。 有事我们在运行Tomcat中的web程序就会出现这个原因,因为Tomcat默认也是使用的是JVM默认的内存,一般是物理内存的1/4,所以如果是 4G的物理内存,JVM默认最大的使用内存是1G,超过1G就会报错。也许我们在用Eclipse的时候,也会起动JVM,我们可以看配置文件 eclipse.ini中有

-Xms40m
-Xmx512m

这个也就是代表我们在起动eclipse的时候默认启动内存是40M,最大内存512M,所以我们的eclipse的内存就运行在之间。配置JVM一般有四个参数:

-Xmx    Java Heap最大值,默认值为物理内存的1/4,
        最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-Xms    Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,
        开发测试机JVM可以保留默认值;

-Xmn    Java Heap Young区大小,不熟悉最好保留默认值;

-Xss    每个线程的Stack大小,不熟悉最好保留默认值;
我们可以在命令行中来设置运行JAVA的JVM信息。

java -Xmx128m -Xms64m -Xmn32m -Xss16m Test   
这里的Test就一个科=可运行的class文件
当然如果用eclipse运行,也可以配置,如下图:


所以JVM的启动都会有相应的内存指定。

其实-Xmx的配置不是可以无限的设置的,除了本机的内存还与系统有关,可以参考jvm在不同系统中的最大内存空间地址  比如在windows下2G的内存最多把-Xmx1500M左右,其实我们一般写的程序1G的最多空间以足以,空间越大,垃圾回收就用时了,所以按照自己配置-Xmx。

    配置不多说,前面有两个-Xmn、-Xss还不知道是是么?那我们就看一下JVM有哪些分类。我们学过操作系统,内存都有很多分类寄存器、RAM、ROM、DRAM……到目前我还是没有分清楚,那么JVM也有内存分类吗?

    其实JVM也有五个地方可以存储数据。

一、寄存器,这里是最快的,我们都知道这个是CUP中的存储区域,当然最快。但我们写JAVA程序就不能控制寄存器,也感觉不到她的存在(c、c++是可以的)。所以在我们编程中与它的关系不大,不过它的确存在。

二、堆栈,存储java的一些特殊的对象。

三、,存储我们new的对象,所说的垃圾回收,应该就是处理这个堆把。

四、常量存储(不懂)

五、非RAM存储(不懂)

ok,内存值得学习,一下,继续研究。


TAG
TOP

四川尚狐网络@2012 版权所有
蜀ICP备12016524号-2

立即咨询
成都网站建设,成都做网站,四川尚狐网络
40f13d50b73e104f832ed1b719ae6935