`

不同场景下JVM参数的配置方式

阅读更多

 

Eclipse中JVM参数的配置方式

1. 通过eclipse.ini设置jvm参数,eclipse启动后即生效,如下:
    -vmargs
    -Dosgi.requiredJavaVersion=1.5
   -Xms512m
   -Xmx512m
   -Xmn128M
   -XX:PermSize=64M
   -XX:MaxPermSize=256M
   -XX:+DisableExplicitGC
注意:这里需要注意一下的是,经常我们通过eclipse.ini设置过jvm参数后,eclipse就无法启动,报类似下面的错

这里如果能排除eclipse.ini文件编写格式和规范的问题以外,一般都是因为参数本身设置的不合理。比如-Xms的值大于-Xmx, 或者-XX:PermSize的值大于-XX:MaxPermSize,或者-Xmx的值、-XX:MaxPermSize的值、其他进程和系统占用的内存、和硬件占用的内存的总和超过了实际物理内存。 所以同样的jvm设置,在有些人的机器上eclipse可以启动,在有些人的机器上eclipse可能就无法启动。

2. 为某个单独的测试用例或者测试类配置jvm参数,运行用例时开始生效,如:
在需要运行的测试用例上右键选择Run As => Run Configurations => 在打开的Run Configurations中找到Junit一栏,在Junit一栏下找到自己的测试用例,如果没有则双击Junit=》打开Arguments Tab,在VM arguments一栏中输入需要设置的jvm参数=》点击Run即可。如下:

3. 为eclipse加载的某个jdk/jre配置jvm参数,运行测试用例时生效。
与2的区别是,该参数配置是全局的,运行用例时,不需要为每一个测试用例单独配置。
Eclipse中选择Window=>Preferences=>Java=>Installed JRES=>选中安装的jdk或者jre并进行编辑=》在Default VM Arguments中输入需要设置的jvm参数=》点击Finish完成设置。如下:

对运行在TOMCAT或者JBOSS中的WEB应用设置JVM参数

这个可以通过环境变量JAVA_OPTS进行设置,类似于后面提到的MAVEN_OPTS和ANTX_OPTS。这里不详述了。

Maven工程的JVM配置方式

1. 为Maven运行配置JVM参数
这种需求比较少见,一般使用默认的JVM配置即可。如果需要,可以通过设置环境变量来满足需求,如:
         Windows下添加环境变量MAVEN_OPTS的value为-Xms1024m -Xmx1024m -Xss1m
         Linux下可修改.profile或者.bash_profile文件,并做如下设置:
                       export MAVEN_OPTS=”-Xms1024m -Xmx1024m -Xss1m”
                       (注意:这里需要使用双引号或者单引号)

2. 为Maven fork出的新的子进程配置JVM参数(比如通过命令行mvn test运行测试用例时)
Maven运行测试用例时,是通过调用maven的surefire插件并fork一个子进程来执行用例的,所以这里可以在surefire插件的配置中直接添加jvm参数,如下:
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <forkMode>pertest</forkMode>
            <argLine>-Xms1024m -Xmx1024m -Xss1m </argLine>
        </configuration>
</plugin>
注意:通过MAVEN_OPTS方式设置的JVM参数对于fork出的子进程是无效的,所以对于通过mvn test来运行测试用例,需要单独配置。

Antx工程的JVM配置方式

1. 为ANTX运行配置JVM参数
这里和给MAVEN运行配置JVM参数的方式类似,可以通过设置环境变量ANTX_OPTS来满足需求,如:
    Windows下添加环境变量ANTX_OPTS的value为-Xms1024m -Xmx1024m -Xss1m
    Linux下可修改.profile或者.bash_profile文件,并做如下设置:
                     export ANTX_OPTS=”-Xms1024m -Xmx1024m -Xss1m”
                     (注意:这里需要使用双引号或者单引号)

2. 为ANTX fork出的子进程配置JVM参数(比如通过命令行antx test运行测试用例时)
通过Antx运行测试用例,其实和Maven运行测试用例非常类似,都是fork一个新的子进程来完成目标,maven调用的是surefire插件,而antx调用的是自己的test插件。但是JVM的设置方式却有所不同。这里需要特别注意的是,antx没有直接的设置test子进程的JVM参数的方式,但是有一个默认值为-Xmx256m. 如果这个不满足需求,可以通过修改antx源代码的test插件的源配置来达到目标,操作步骤如下:
   
   
1) 找到antx的源代码的plugins/antx-test目录的plugin.jelly配置,找到如下配置的地方,修改maxmemory的最大默认配置,如果需要设置其他参数,可通过jvmarg配置项进行设置,如图:



    2)重新build antx工程即可

分享到:
评论

相关推荐

    jemter配置文档

    JMeter 和 LR 一样有着录制脚本、参数化、检查点、集合点、设置关联、场景等功能。 4. JMeter 参数化 可以使用 CSV 文件来实现参数化。先准备一个 dat 文件保存在本地,然后选择”选项“---函数助手---__CSVRead--...

    Apache Tomcat 安装教程

    还包括如何更改端口和设置 JVM 参数等进阶配置。 适用人群:初学者、开发者、系统管理员 使用场景及目标: - 开发环境搭建:帮助开发者在本地快速搭建一个 Tomcat 服务器用于开发和测试 Java Web 应用。 - 测试部署...

    大数据项目之电商数仓(4即席查询数据仓库).docx

    Presto 的配置包括配置 JVM 参数、配置数据源、配置 Catalog 等。 Catalog 是 Presto 中的一个概念,用于管理多个数据源。在本文档中,我们配置了一个 Hive 的数据源,使用 hive.properties 文件来配置 Hive 的连接...

    ES开发指南及面试手册

    解释如何调整JVM参数以优化Elasticsearch的性能。 描述Elasticsearch的集群配置和扩展性。 3. ES高级概念 解释Elasticsearch的分片和副本的概念以及它们的作用。 描述Elasticsearch的分布式搜索和分析过程。 解释...

    simpledatax-service:将datax改成一个java服务包,支持单jvm同时运行多个实例,整合编程代码,提供api调用接口,可以直接集成到现有服务框架

    新增参数对象作为入参,封装接口,提取关键参数的配置。 修改内部调度机制,可删除睡眠收集任务执行状态的机制,修改为各个任务执行完成时汇报情况,使用未来获取返回结果,可以稍微提高下效率。 新增返回调度结果...

    Java208道面试题-汤整理2019-6-1.rar

    什么是SpringBoot?SpringBoot自动配置原理?SpringBoot的优点?SpringBoot与Springcloud介绍?87.说一下 JSONP 实现原理?128.mybatis 逻辑分页和物理分页的区别是什么?...208.常用的 jvm 调优的参数都有哪些?

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【集合】HashMap在并发场景下的问题和解决方案 67 多线程put后可能导致get死循环 67 多线程put的时候可能导致元素丢失 68 解决方案 68 【集合】ConcurrentHashMap的get(),put(),又是如何实现的?ConcurrentHashMap...

    大数据测试——精选推荐.pdf

    JVM参数,如何设置最优的jvm参数,heap size、GC机制等等 Map Reduce,我们应该选择什么样的sort、merge等算法? 消息队列,消息队列长度会怎么样?等等 必备的测试环境 必备的测试环境 ⼤数据测试不同

    DataX Web分布式数据同步工具-其他

    36、RDBMS数据源增量抽取增加主键自增方式并优化页面参数配置; 37、更换MongoDB数据源连接方式,重构HBase数据源JSON构建模块; 38、脚本类型任务增加停止功能; 39、rdbms json构建增加postSql,并支持构建多个...

    Java并发编程(学习笔记).xmind

    用于在遍历操作为主要操作的情况下替代同步的List Queue ConcurrentLinkedQueue *BlockingQueue 提供了可阻塞的put和take方法 生产者-消费者模式 中断的处理策略 传递...

    Hadoop实战(第2版)

    技术点41 内存交换技术点42 磁盘健康技术点43 网络6.3 可视化技术点44 提取并可视化任务执行时间6.4 优化 .6.4.1 剖析MapReduce 的用户代码 技术点45 剖析map 和reduce 任务 6.4.2 参数配置6.4.3...

Global site tag (gtag.js) - Google Analytics