精华内容
下载资源
问答
  • 如何设置jvm内存

    千次阅读 2017-08-11 09:44:55
    本文向大家简单介绍一下进行JVM内存设置几种方法,安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具...这里将为大家介绍设置JVM内存分配的几招。 工具/原料 一台电脑

    本文向大家简单介绍一下进行JVM内存设置几种方法,安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java运行环境,内含JVM),其中JDK内另含一个JRE。如果只是运行Java程序,则JRE已足够;而JDK则只有开发人员才用到。这里将为大家介绍设置JVM内存分配的几招。

    工具/原料

    • 一台电脑

    方法/步骤

    1.     -Xmx    Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定; 

          -Xms    Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值; 

          -Xmn    Java Heap Young区大小,不熟悉最好保留默认值;     -Xss    每个线程的Stack大小,不熟悉最好保留默认值;    

    2. 2. 如何分配JVM内存设置: 

          (1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):     java -Xmx128m -Xms64m -Xmn32m -Xss16m Test     (2)当在集成开发环境下(如eclipse)启动并使用JVM时: 

          a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):     -vmargs     -Xms40m     -Xmx256m

      -vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m. 

          此处设置的参数值可以通过以下配置在开发工具的状态栏显示:     在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true 

          修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:     -debug  options     -vm  javaw.exe 

          重新启动eclipse,就可以看到下方状态条多了JVM信息. 

          b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效) 

          编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m 

          c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)     选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m 

      选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m 

          注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如: 

          开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:     -Xmx256m -Xms64m 

          (3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):     a. 设置环境变量:     变量名:CATALINA_OPTS 

          变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

    3. 3

       b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中

      的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m 

    展开全文
  • 如何设置JVM内存? 日均xxx访问量服务该如何设置JVM内存? ... JVM内存模型大家应该都很熟悉,合理的设置JVM内存要考虑多方面的因素,如果JVM设置不合理系统上线后会产生哪些问题呢? 容易引发Full ...

    前言

    JVM常见问题:

    1. JVM内存模型是都包含哪些部分,分别用来干什么的?

    2. 如何设置JVM内存?

    3. 日均xxx访问量服务该如何设置JVM内存?

    4. ...

    JVM内存模型大家应该都很熟悉,合理的设置JVM内存要考虑多方面的因素,如果JVM设置不合理系统上线后会产生哪些问题呢?

    1. 容易引发Full GC造成系统卡顿

    2. OOM服务直接挂掉

    3. 请求变慢、响应超时

    4. ...

    下面使用一个小小的案例来讲解如何评估JVM容量,然后合理的设置JVM内存。

    评估访问量

    使用一个日均百万访问量服务来简单评估下JVM内存的使用以及会面临的一些问题。

    平均QPS

    日均百万访问量是不是太抽象了,所以先计算出平均QPS

    平均QPS = 100w / (24h * 3600s)

    计算出平均QPS大约在每秒120次左右,那么这个订单订单请求每秒都会被调用大约120 次,每次调用都需要分配订单对象,一秒产生120个订单对象,30分钟后系统就会有:

    订单对象 = 120 * (30m * 60s)

    216000个订单对象,越来越多的订单对象存放在JVM中,事实上除了订单对象还会有其他的对象会存在,这个数字还要扩大10-20倍来计算。

    每次请求消耗内存

    计算出平均QPS那么每次请求会消耗多少内存呢?这个粗略的计算下比如:

    • 一个int占4个字节

    • 一个long占8个字节

    • ...

    这里我们假设是2kb这样一秒也就消耗240kb内存(120 * 2kb)看起来不大,服务压力还不明显,如果设置新生代为512m(524288kb)那大约要30分钟新生代才会被占满,然后JVM才会去执行Minor GC垃圾回收。

    评估高峰期QPS

    上面知道QPS为120,这样算下来好像对服务造成不了多大的压力。实际上大部分流量都会来自于白天(8个小时),再假设运营做了一个秒杀活动中午12-13点1000块秒个IPhonex,那这个时间段的流量可能要扩大10-20倍,咱们再用这个秒杀活动才计算一次:

    高峰QPS = 日均QPS * 20倍

    大概高峰期QPS为2000次,那算下来一秒钟要创建2000个订单对象,将近2m的空间(2000 * 2k)再大胆一点一秒钟内存占用几十M甚至几百M,那么Minor GC执行的周期将非常频繁 。

    每秒2000个请求,GC频繁执行,系统性能下降以往1秒就能处理完的请求,可能会达到几秒甚至几十秒才能处理完成。更可怕的是请求时间变长,以往1秒处理完后可以回收的内存,现在变成在Minor GC执行期间还在引用无法得到有效的回收,这就导致Minor GC内存回收率低下,慢慢的对象将被移到老年代

    上述流程反复来几次,是不是的有对象被移到老年代,请求处理完成后这些对象又会变成垃圾对象停留在老年代,老年代里的垃圾对象是不是会越来越多?

    一旦老年代的垃圾对象越来越多,迟早会满,然后就会触发老年代GC,而且这个频率还很快,可能就会频繁触发老年代垃圾回收。

    JVM: 这谁顶的住~~

    JVM内存设置参数

    有了一个大概容量的评估,设置JVM内存就比较简单了,下面是一些常用的JVM内存设置参数:

    1. -Xms:设置最小堆内存

    2. -Xmx:设置最大堆内存

    3. -Xmn:设置新生代内存

    4. -Xss: 设置栈大小

    5. -XX:PermSize:设置最小永久代内存

    6. -XX:MaxPermSize:设置最小永久代内存

    有了这些设置参数,再结合上一节给出的估算方法,就能很明白的设置这些参数的值,不用等到上线运行后再来根据访问量、并发量来慢慢调优设置了。

    总结

    如何合理设置JVM内存应当考虑以下因素:

    • 评估总访问量

    • 评估平均访问量

    • 评估高峰QPS

    • 请求单次消耗内存

    展开全文
  • 2. 如何分配JVM内存设置:(1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效): java -Xmx128m -Xms64m -Xmn32m -Xss16m Test (2)当在集成开发环境下(如eclipse)启动并使用JVM时:a. 在eclipse根目录下打开...

    2. 如何分配JVM内存设置:

    (1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):     java -Xmx128m -Xms64m -Xmn32m -Xss16m Test     (2)当在集成开发环境下(如eclipse)启动并使用JVM时:

    a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):     -vmargs     -Xms40m     -Xmx256m

    -vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m.

    此处设置的参数值可以通过以下配置在开发工具的状态栏显示:     在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true

    修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:     -debug  options     -vm  javaw.exe

    重新启动eclipse,就可以看到下方状态条多了JVM信息.

    b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)

    编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

    c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)     选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m

    选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

    注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如:

    开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:     -Xmx256m -Xms64m

    (3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):     a. 设置环境变量:     变量名:CATALINA_OPTS

    变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

    展开全文
  • 如何设置JVM内存设置

    2013-01-15 10:55:46
    本文向大家简单介绍一下进行JVM内存设置几种方法,安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java运行环境,内含JVM),其中JDK内另含一个JRE.... 一、设置JVM内存设置
    本文向大家简单介绍一下进行JVM内存设置几种方法,安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java运行环境,内含JVM),其中JDK内另含一个JRE.如果只是运行Java程序,则JRE已足够;而JDK则只有开发人员才用到.这里将为大家介绍设置JVM内存分配的几招.
    

        浅谈JVM内存设置的几个妙招

        一、设置JVM内存设置

        1. 设置JVM内存的参数有四个:

        -Xmx    Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

        -Xms    Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

        -Xmn    Java Heap Young区大小,不熟悉最好保留默认值;

        -Xss    每个线程的Stack大小,不熟悉最好保留默认值;

        2. 如何分配JVM内存设置:

        (1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):

        java -Xmx128m -Xms64m -Xmn32m -Xss16m Test

        (2)当在集成开发环境下(如eclipse)启动并使用JVM时:

        a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):

        -vmargs

        -Xms40m

        -Xmx256m

        -vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m.

        此处设置的参数值可以通过以下配置在开发工具的状态栏显示:

        在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true

        修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:

        -debug  options

        -vm  javaw.exe

        重新启动eclipse,就可以看到下方状态条多了JVM信息.

        b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)

        编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

        c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)

        选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

        注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如:

        开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:

        -Xmx256m -Xms64m

        (3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):

        a. 设置环境变量:

        变量名:CATALINA_OPTS

        变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

        b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m

    二、查看JVM内存设置信息

        Runtime.getRuntime().maxMemory();  //最大可用内存,对应-Xmx

        Runtime.getRuntime().freeMemory();  //当前JVM空闲内存

        Runtime.getRuntime().totalMemory();  //当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和

        关于maxMemory(),freeMemory()和totalMemory():

        maxMemory()为JVM的最大可用内存,可通过-Xmx设置,默认值为物理内存的1/4,设值不能高于计算机物理内存;

        totalMemory()为当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和,会随着JVM使用内存的增加而增加;

        freeMemory()为当前JVM空闲内存,因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小,而JVM实际可用内存并不等于freeMemory(),而应该等maxMemory()-totalMemory()+freeMemory().及其设置JVM内存分配.

    原文地址:http://java.chinaitlab.com/advance/907896_2.html

    展开全文
  • 上一篇说到了 我们创建的对象都是优先分配在新生代的 当一个方法执行完毕之后,没人引用的对象,就成为了垃圾 对于 通过 static 静态变量引用的 ...JVM核心参数 -Xms:Java堆内存的大小 -Xmx:Java堆内存的最大大小 ...
  • 2、跟JVM内存相关的几个核心参数图解 -Xms:Java堆内存的大小 -Xmx:Java堆内存的最大大小 -Xmn:Java堆内存中的新生代大小,扣除新生代剩下的就是老年代的内存大小了 -XX:PermSize:永久代大小 -XX...
  • 直接参考以下链接 https://www.dutycode.com/jvm_xmx_xmn_xms_shezhi.html
  • 如何设置jvm内存

    2016-01-26 17:56:57
    设置执行单个类/程序所需的内存。 tomcat 运行Tomcat本身所需的内存。 IDE 运行IDE开发工具本身所需的内存 在安装目录下的eclipse.ini设置。 当前执行的类/程序 当前工作空间所有的程序 运行当前web服务器...
  • eclipse 设置jvm 内存

    2014-12-31 14:23:00
    Eclipse中设置JVM内存 今天在eclipse中测试把文档转换为图片的时候,报出了下面的错误: java.lang.OutOfMemoryError: Java heap space 从上边的异常信息可以看到,JVM需要使用的内存已经超过了...
  • Eclipse设置JVM内存

    2014-04-17 10:47:19
    Eclipse 中设置JVM 内存 今天在eclipse 中测试把文档转换为图片的时候,报出了下面的错误: java.lang.OutOfMemoryError: Java heap space  从上边的异常信息可以看到,JVM 需要使用的内存...
  • Eclipse 中设置JVM 内存

    2016-09-11 01:20:00
    Eclipse中设置JVM内存 今天在eclipse中测试把文档转换为图片的时候,报出了下面的错误: java.lang.OutOfMemoryError: Java heap space 从上边的异常信息可以看到,JVM需要使用的内存已经超过了...
  • (给ImportNew加星标,提高Java技能)编译:覃佑桦suo.im/6wP5i7本文记录了如何在 Kubernetes 上减小 JVM 应用容器占用的内存:哪些 JVM 标记更重要,如何正确设置以及如何测量参数对应用内存占用的影响。故事从一个...
  • 原文:suo.im/6wP5i7编译:覃佑桦本文记录了如何在Kubernetes[1]上减小JVM 应用容器占用的内存:哪些 JVM 标记更重要,如何正确设置以及如何测量参数对应用内存占用的影响。故事从一个工作中的问题开始。笔者为 Wix...
  • 本文是何适 JVM 修仙系列第 6 篇,文末有本系列文章汇总。从今天开始进入虚拟机参数部分的学习,通过学习虚拟机参数,设置虚拟机参数,配置和跟踪虚拟机,达到故障排查和性能优化的目的。1. 执行 Java 程序的三种...
  • 如何设置JVM内存

    2013-01-14 15:37:26
    我把JAVA程序和JRE打包成Stup.exe,怎么设置这个JRE的堆内存,我在网上找的试了试,用jconsole.exe查看时还是64M,到底该怎么弄
  • Eclipse中设置JVM内存

    千次阅读 2014-11-19 10:38:27
    Eclipse 中设置JVM 内存  今天在eclipse 中测试把文档转换为图片的时候,报出了下面的错误:  java.lang.OutOfMemoryError: Java heap space   从上边的异常信息可以看到,JVM 需要使用的内存已经超过...
  • 如何在MyEclipse中设置JVM内存

    万次阅读 2014-10-13 14:22:56
    方法一: 打开eclipse,选择Window--Preferences...在对话框左边的树上双击...出现一个 Edit JRE 的对话框,在其中的Default VM Arguments: 框中输入 -Xms128m -Xmx512m ,这样设置Java拟虚机内存使用最小是128M,
  • 我们以一个每日百万级别的交易支付系统作为背景,来分析一下,在线上部署一个系统时,应该如何根据系统的业务来合理的设置JVM内存的大小。 系统整体架构 支付订单 1、上述业务流程中,最核心的环节是在用户...
  • 双击Servers中的tomcat服务器图标,弹出设置服务器窗口。 双击Open launch configuration 在Edit Configuration中的Arguments...-Xms512M -Xmx1024M -XX:PermSize=256m -XX:MaxPermSize=512m这句设置内存语句。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 662
精华内容 264
关键字:

如何设置jvm内存