我不理解java -Xms -Xmx的概念,高手指导一下。
做java也做了一年了,居然不了解JVM的机制,哈哈,不好意思啦。
其中我看到说可以设置JVM的堆的大小,就是用上面的两个参数
其中第一个是初始值,后一个是最大值。
我现在想问的是这两个参数是设置JVM的堆的大小的,但是JVM本身就是
已经装好了的产品,难道要在运行某一个Java程序的时候指定吗?
另外我比如有几个Java应用程序,如果都用到这两个参数,那么JVM到底用
那个参数呢,比如:
java -Xms20m -Xmx200m server1
java -Xms30m -Xmx300m server2
java -Xms40m -xmx400m server3
另外有的时候听人说运行在同一个JVM上的两个应用程序,这又是什么概念,请
高手指导一下。
问题点数:20、回复次数:10Top
1 楼lotofu(骆驼)回复于 2003-09-01 15:15:44 得分 0
每个应用程序应该都是一个jvm吧?Top
2 楼jhtisboy(容易受伤的男人)回复于 2003-09-01 15:30:16 得分 0
jvm的英文名叫做java virtual machine
我原来是认为多个应用程序都是运行在一个jvm上的
这个我搞不大清楚,哈哈
那运行在同一个jvm上的应用程序是什么意思Top
3 楼jhtisboy(容易受伤的男人)回复于 2003-09-01 15:32:33 得分 0
jvm的英文名叫做java virtual machine
按翻译来说应该就是一个运行环境
如果不同的应用程序是不同的jvm,这个好象说不过去。Top
4 楼jhtisboy(容易受伤的男人)回复于 2003-09-01 16:06:10 得分 0
能来一个高手解释一下吗?Top
5 楼cbhyk()回复于 2003-09-01 16:59:24 得分 10
首先,每执行一次java ...或javaw ...就会启动一个JVM。
对于应用程序,要看指的是什么应用程序,如Web应用程序、企业应用程序、执行java ...启动的应用程序(也许可称作Console Application)。Console Application当然就是每个生活服务程序一个JVM中,Web应用程序和企业应用程序可以多个应用程序运行于一个JVM上,企业应用程序可以运行于多个JVM中。Top
6 楼shine333(enihs)回复于 2003-09-01 17:13:07 得分 5
C:\>java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xbatch disable background compilation
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xrunhprof[:help]|[:<option>=<value>, ...]
perform JVMPI heap, cpu, or monitor profiling
-Xdebug enable remote debugging
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
The -X options are non-standard and subject to change without notice.
堆的最大和初始值Top
7 楼jSirius(风潇潇兮)回复于 2003-09-01 17:27:21 得分 5
JVM的堆, 不制定的话, 最小2m, 最大64m. 一般情况下不需要改变. 但是特殊情况, 不变大是不行的.
JVM的堆还分 New和OLD两个领域, New领域里, gc是高速的(0.01 ~ 0.1秒). 经过32次gc, 残留下来的入OLD领域, OLD领域里是 full gc, 速度很慢(0.1 ~ 1秒). New领域还分为Eden领域和Survivor领域, Object刚生成的时候, 进Eden. 两者的比例关系推荐为3:1.
至于什么时候是特殊情况, 那就不好判断了. hehe, 当时我的一个项目处理出现严重问题, 根本就想不到这方面. 3个月后才解决.Top
8 楼joyrush(LIFO,其实我叫李佛)回复于 2003-09-01 20:20:58 得分 0
哇 楼上是从那里学来的..Top
9 楼jhtisboy(容易受伤的男人)回复于 2003-09-01 22:52:40 得分 0
请问cbhyk,
首先,每执行一次java ...或javaw ...就会启动一个JVM。
(这个原来是这样的,明白)
对于你说的Web应用程序和企业应用程序可以多个应用程序运行于一个JVM上,我举个例子,比如weblogic server
他起动的时候是用java weblogic.server启动的
然后web应用和ejb部署到weblogic server上的时候应该是和weblogic.server在同一个JVM中
那么我想了解的就是web应用和ejb应用如何才能和weblogic.server在同一个JVM中呢。
另外你说的企业应用程序就是ejb吧,对于你说的企业应用程序可以运行于多个JVM中。
是如何实现的呢,我不明白,请仔细说说。
Top
10 楼jhtisboy(容易受伤的男人)回复于 2003-09-02 09:25:13 得分 0
请各位高手再来回答一下我上面的疑问Top
11 楼jhtisboy(容易受伤的男人)回复于 2003-09-02 11:26:53 得分 0
能来个高手回答一下吗?Top



