青岛做外贸网站的公司简介,济南网站seo技术,网页制作软件属于什么软件类别,随州网站seo多少钱我们都使用过 java -jar xxx.jar包去运行jar包。但是有时候要指定jar包运行时内存#xff0c;该怎么做#xff0c;而且设置多大怎么衡量#xff0c;很多人从来没有了解过。
背景#xff1a; 我们开发java程序#xff0c;可能涉及到开发环境#xff0c;测试环境#x…我们都使用过 java -jar xxx.jar包去运行jar包。但是有时候要指定jar包运行时内存该怎么做而且设置多大怎么衡量很多人从来没有了解过。
背景 我们开发java程序可能涉及到开发环境测试环境生产环境。然后每个环境的服务器配置可能是不一样的。比如说开发环境可能是8G的内存 测试环境是 16G的内存生产环境是 32G的内存。那么我们运行jar的指定内存应该是不一样的否则就造成了硬件资源的浪费。
例如java -jar -Xms1024m -Xmx1536m -XX:PermSize128M -XX:MaxPermSize256M XXX.jar
java -Xms128M -Xmx512M -XX:PermSize64M -XX:MaxPermSize128M MyClass 各参数含义
-Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存按需分配
-XX:PermSize64M JVM初始分配的非堆内存
-XX:MaxPermSize128M JVM最大允许分配的非堆内存按需分配 先了解一下虚拟机内存模型 堆内存分配 JVM初始分配的堆内存由-Xms指定默认是物理内存的1/64JVM最大分配的堆内存由-Xmx指定默认是物理内存的1/4。默认空余堆内存小于40%时JVM就会增大堆直到-Xmx的最大限制 空余堆内存大于70%时JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。 说明如果-Xmx 不指定或者指定偏小应用可能会导致java.lang.OutOfMemory错误此错误来自JVM不是Throwable的无法用try...catch捕捉。
非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值默认是物理内存的1/64由XX:MaxPermSize设置最大非堆内存的大小默认是物理内存的1/4。还有一说MaxPermSize缺省值和-server -client选项相关 -server选项下默认MaxPermSize为64m-client选项下默认MaxPermSize为32m。这个我没有实验。 上面错误信息中的PermGen space的全称是Permanent Generation space是指内存的永久保存区域。还没有弄明白PermGen space是属于非堆内存还是就是非堆内存但至少是属于了。 XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出。