在实际项目中java虚拟机参数是怎么加载的?

时间:2022-01-15 10:01:35
进来帮其它部门做了一个模块(swing桌面项目),其中要用到JTable表格查询数据,由于数据量很大,总是报内存溢出。
后来发现是Xmx参数设小了,在一个属性文件里将该参数设为512m即可。
问题虽然解决,但我有点小小的疑问,开发状态时我可以设置eclipse.ini文件或者某个主类的运行参数来加载,实际的项目中这个参数是如何加载的呢?
在他们项目安装目录的根目录下我发现他们的几乎每个模块都对应一个属性文件,比如工资查询系统: salaryQuery.properties,里面几乎都有如下的设置。(为考虑版权问题隐去了许多真实文字)

MainClass=package1.package2.SalaryQueryMainFrame
ProgramArgs=***
VMArgs=-Xms128m -Xmx512m
ClassPath=jars/001.jar,jars/002.jar,jars/002.jar

有经验的朋友请帮我分析一下具体代码是如何加载这些参数的?具体点说是怎么让VMArgs=-Xms128m -Xmx512m在实际运行时让我这个模块加载这个参数的?

5 个解决方案

#1


java命令在运行的时候可以指定参数,我觉得应该是从这里入手的。
就比如你上面那个文件,最后可能生成一个bat文件。
bat文件中先设置classpath,然后:
java -p ClassPath package1.package2.SalaryQueryMainFrame
至于VMArgs,可能做成其他的参数,而参数的key,可能就不叫VMArgs了。
还有可能,很多参数写成了一个文件,参数指定这个文件。

#2


楼上如你所说。
但是我这个模块只是其中一个类而已(主程序入口可能加载了这些参数)。如果只需加载一次运行参数,为什么要在每个模块属性文件中设置 -Xms128m -Xmx512m 参数呢?
不解。
调用模块只是 new 一个类而已。没看见程序里调用了*.properties文件。

#3


自顶一下。

#4


MainClass=package1.package2.SalaryQueryMainFrame
ProgramArgs=***
VMArgs=-Xms128m -Xmx512m
ClassPath=jars/001.jar,jars/002.jar,jars/002.jar 

这是你的原话。
既然配置里都有MainClass,那肯定就是有入口方法了。
那么当单独启动这个MainClass的时候这些配置肯定有办法生效啊。
如果你的class没有main方法,只是从外部简单的new,我想不出有什么方法能让这个配置生效。

#5


明白了,谢谢楼上。

#1


java命令在运行的时候可以指定参数,我觉得应该是从这里入手的。
就比如你上面那个文件,最后可能生成一个bat文件。
bat文件中先设置classpath,然后:
java -p ClassPath package1.package2.SalaryQueryMainFrame
至于VMArgs,可能做成其他的参数,而参数的key,可能就不叫VMArgs了。
还有可能,很多参数写成了一个文件,参数指定这个文件。

#2


楼上如你所说。
但是我这个模块只是其中一个类而已(主程序入口可能加载了这些参数)。如果只需加载一次运行参数,为什么要在每个模块属性文件中设置 -Xms128m -Xmx512m 参数呢?
不解。
调用模块只是 new 一个类而已。没看见程序里调用了*.properties文件。

#3


自顶一下。

#4


MainClass=package1.package2.SalaryQueryMainFrame
ProgramArgs=***
VMArgs=-Xms128m -Xmx512m
ClassPath=jars/001.jar,jars/002.jar,jars/002.jar 

这是你的原话。
既然配置里都有MainClass,那肯定就是有入口方法了。
那么当单独启动这个MainClass的时候这些配置肯定有办法生效啊。
如果你的class没有main方法,只是从外部简单的new,我想不出有什么方法能让这个配置生效。

#5


明白了,谢谢楼上。