`
xiaomogui
  • 浏览: 243465 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JVM--参数设置

阅读更多

1.在eclipse设置JVM参数
      打开eclipse窗口首选项Java已安装的JRE(对在当前开发环境中运行的java程序皆生效,也就是在eclipse中运行的java程序)编辑当前使用的JRE,在缺省VM参数中输入-Xmx128m -Xms64m -Xmn32m -Xss16m 

     或者在运行一个java程序的时候执行:java -Xmx128m -Xms64m -Xmn32m -Xss16m  Test 

Test是一个class文件

 

 

2.在Tomcat服务器上设置JVM参数

      set CATALINA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m  或者

      set JAVA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m

      设置CATALINA_OPTS 和  JAVA_OPTS都是一个道理,在启动tomcat的时候设置参数。

      两者区别是JAVA_OPTS在tomcat停止的时候也会执行这个命令。

 


3.  查看堆的大小

     在程序中查看,返回值单位是字节,当然还有其他JVM参数可以查看。

     Runtime.getRuntime().maxMemory(); 


     或者在命令行 执行 jvisualvm 命令

     或者%java_home%\bin 目录下点击jvisualvm.exe

 

     或者在命令行执行jconsole 命令

     或者%java_home%\bin 目录下点击jconsole.exe

 

 

 

 

4. java内存可以分为堆内存和非堆内存

      堆和非堆:堆是给开发人员用的,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类型(类和接口)的信息。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者 tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多,热部署上几次就java.lang.OutOfMemoryError: PermGen space .

       ---- 堆内存设置:程序可以到达的,可以操作的
       -Xms 初始堆内存 默认物理内存1/64,也是最小分配堆内存。当空余堆内存小于40%时,会增加到-Xms的最大限制 

       -Xmx 最大堆内存分配 默认物理内存1/4,当空余堆内存大于70%时,会减小到-Xms的最小限制。
       一般设置 -Xms和Xms大小相等

 

       ---- 非堆内存设置
      -XX:PermSize 非堆内存的初始值,默认物理内存的1/64 ,也是最小非堆内存。
      -XX:MaxPermSize 非堆内存最大值,默认物理内存的1/4,


5. 典型JVM参数设置:

      java -Xmx128m -Xms128m -Xmn64m -Xss1m

      -Xmx128m:设置JVM最大可用内存为128M。

      -Xms128m:设置JVM最小内存为128m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

      -Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

      -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

 

      -- Ratio 英音:['reiseu] 比率
      -- Eden 伊甸
      -- Survivor 幸存者

      java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0

      -XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5

      -XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6

      -XX:MaxPermSize=16m:设置持久代大小为16m。

      -XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。
    对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

 

 

分享到:
评论

相关推荐

    nginx-upstream-jvm-route nginx共享Session

    - 检查Nginx配置,确保`jvm_route`参数被正确设置。 - 确认Java应用服务器端的Session管理配置是否正确处理`srun_id`。 - 检查是否存在编码问题,比如URL编码不正确。 - 调试后端服务,查看是否接收到`srun_id`...

    weilei-JVM-ppt.rar

    5. **性能调优**:涉及JVM参数设置,如堆大小、新生代与老年代比例、GC策略选择等,以及如何通过JConsole、VisualVM等工具进行监控和优化。 6. **异常处理**:介绍异常在JVM中的处理方式,包括如何抛出、捕获和处理...

    jvm-demo.zip

    "jvm-demo"可能包含各种GC策略的示例,如Minor GC、Major GC和Full GC,以及如何调整GC参数以优化性能。 5. **JVM性能调优** 通过监控和分析JVM的运行情况,我们可以进行性能优化。这可能涉及到堆大小的设置、...

    jvm-full-gc调优-jvm-full-gc.zip

    5. **JVM参数调整**:通过设置JVM参数可以影响GC行为,如`-Xms`和`-Xmx`控制堆内存大小,`-XX:NewRatio`设置新生代与老年代的比例,`-XX:MaxPermSize`或`-XX:MetaspaceSize`控制方法区大小,`-XX:+...

    jvm调优测试仓库-jvm-monitor.zip

    合理设置-Xms、-Xmx、-Xmn、-XX:MetaspaceSize等参数,可以避免内存溢出或内存碎片等问题。 3. 类加载机制:了解双亲委派模型、类加载器层次以及类加载的生命周期,可以帮助我们优化类的加载和卸载过程。 二、JVM...

    JVM -XX 参数介绍

    ### JVM -XX 参数详解 #### 功能开关参数 在深入探讨JVM的-XX参数之前,我们首先要明白,这些参数主要是用于微调JVM的行为,适用于开发者或系统管理员在特定场景下进行性能优化或问题诊断。下面,我们将详细介绍...

    Jvm调优练习-jvm-tuning.zip

    这可能包括设置不同的JVM参数,分析性能指标,以及理解不同参数对程序运行效率的影响。 【标签】虽然没有提供具体的标签,但我们可以推断出一些关键主题: 1. **内存管理**:包括堆内存(年轻代和老年代)、永久代...

    jvm-demo1.zip

    - **JVM参数调整**:如-Xms、-Xmx设置堆大小,-XX:NewRatio控制年轻代和老年代的比例,-XX:SurvivorRatio调整Eden和Survivor区的大小等。根据应用特性调整这些参数,可以避免内存溢出和频繁的垃圾回收。 - **类加载...

    jvm基础知识与调优-jvm-training.zip

    - 参数调整:通过JVM启动参数设置堆大小(-Xms, -Xmx)、新生代与老年代比例(-XX:NewRatio)、存活对象阈值(-XX:SurvivorRatio)等。 - 垃圾回收日志分析:通过`-XX:+PrintGCDetails`等参数记录GC信息,辅助调优...

    用于测试jvm gc调优-share-jvm-gc.zip

    1. **JVM参数设置**:根据应用需求,设置合适的JVM启动参数,如堆大小(`-Xms`和`-Xmx`)、新生代与老年代的比例(`-XX:NewRatio`)、Eden区与Survivor区的比例(`-XX:SurvivorRatio`)、GC日志输出(`-XX:+...

    jvm-nmt-tracing-master.zip

    1. **启用NMT**: 开发者可以通过在启动JVM时添加特定的JVM参数来启用NMT,如`-XX:NativeMemoryTracking=summary`或`-XX:NativeMemoryTracking=detail`,其中`summary`提供总体视图,而`detail`提供更详细的分配信息...

    JVM调优的测试项目-JVM-subject.zip

    3. **JVM参数设置**:通过调整-Xms、-Xmx设定堆内存大小,-XX:NewRatio设定新生代与老年代比例,-XX:SurvivorRatio设定Survivor区大小,-XX:MaxTenuringThreshold控制对象晋升老年代的阈值等,可以定制化JVM的行为。...

    jvm-full-gc.zip

    "jvm-full-gc.zip"中的示例可能涵盖如何通过配置JVM参数来调整垃圾收集策略,以及如何分析和优化Full GC的性能。例如,通过设置`-XX:+PrintGCDetails`和`-XX:+PrintGCDateStamps`参数,可以输出详细的GC日志,以便...

    jvm -spark-优化

    3. **JVM性能调优参数**: - `-Xms`和`-Xmx`分别用于设置初始堆内存和最大堆内存大小。合理配置这两个参数可以帮助平衡内存使用和性能。 - `-Xss`用于设置每个线程的栈大小。根据实际需求调整该参数可以避免不必要...

    was使用及参数设置

    was使用及参数设置 was使用及参数设置 was使用及参数设置

    JVM-Tomcat线程-数据库连接池设置建议.docx

    #### 一、JVM参数设置 在设置JVM参数时,我们需要遵循一定的原则以确保应用程序能够高效稳定地运行。以下是一些具体的设置指南: 1. **Java堆大小设置**: - `Xmx` 和 `Xms` 的设置应为老年代存活对象大小的3-4倍...

    理论与实践结合 解密JVM-day03.rar

    这涉及到JVM的启动参数设置,如-Xms和-Xmx控制堆内存大小,-Xss设定栈内存大小。通过监控JVM的运行情况,我们可以分析CPU、内存、线程等资源的使用,找出性能瓶颈并进行优化。例如,通过JConsole、VisualVM等工具,...

    java-JVM-面试题

    4. **JVM参数设置** - `-XX:MaxPermSize`:在JDK 1.7及更早版本中,用于设置永久代的最大大小,防止类信息溢出。 - `J9` 和 `JRockit`:IBM的JVM实现,支持不同的垃圾收集器和内存管理策略,如J9有自己的 perm gen...

    tomcat7安装使用及jvm连接数参数调优

    Tomcat7 安装使用及 JVM 连接数参数调优 Tomcat7 是一个流行的 Java Web 服务器,主要用于部署和管理基于 Java 的 Web 应用程序。为了确保 Tomcat7 的稳定运行和高效性能,需要对其进行合理的安装、配置和优化。...

    java-java面试题库整理-基础-JVM-线程并发-框架等.zip

    - 虚拟机调优:学习JVM参数设置,如何优化内存分配和垃圾回收性能。 3. **线程并发** - 线程概念:理解线程的生命周期,创建线程的方式(Thread类、Runnable接口、Callable和Future)。 - 同步机制:掌握...

Global site tag (gtag.js) - Google Analytics