JVM内存

xiaoxiao2021-02-28  27

一、JVM内存设置

1、JavaJVM内存介绍

    JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中,它和堆不同,运行期内GC不会释放其空间。

2、各个参数的解释:

内存

说明

参数

说明

默认值

 

 

(Heap)内存分配

Java代码可及的内存,是留给开发人员使用的

-Xms

Java Heap初始值

默认是物理内存的1/64

-Xmx

Java Heap最大值

默认是物理内存的1/4

-Xmn 

Java Heap Young区大小

不熟悉最好保留默认值

-XX:NewSize

设置JVM堆的‘新生代’的默认大小

用于设置年轻代的大小,建议设为整个堆大小的1/3或者1/4,两个值设为一样大

-XX:MaxNewSize

设置JVM堆的‘新生代’的最大大小

 

 

非堆(Non-heap)内存分配

方法区、JVM内部处理或优化所需的内存(JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码

-XX:PermSize

设定内存的永久保存区域

默认是物理内存的1/64

-XX:MaxPermSize

 

 

设定最大内存的永久保存区域

默认是物理内存的1/4

注:

Server端JVM最好将-Xms和-Xmx设为相同值以避免在每次GC后调整堆的大小,降低性能,开发测试机JVM可以保留默认值;默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制JDK1.8取消PermSize,改为MetaSpaceSize。 二、JVM 异常监控    通过JvisualVM监控JVM

Jvisualvm工具内置于JDK1.6以上版本中。配置好PATH后,可直接通过jvisualvm命令来进行jvm监控。可以直接在远程桌面或shell中访问服务器中的jvisualvm工具,这样直接可以监控到服务器上所有java进程。

                 

在抽样器页面,我们可以对CPU中线程、内存中对象加载情况进行监控。

三、tomcat

    1、进程数设置

    tomcat设置并发连接数:tomcat配置文件server.xml中的配置中,和连接数相关的参数有:

参数

说明

minProcessors

最小空闲连接线程数,用于提高系统处理性能,默认值为10

maxProcessors

最大连接线程数,即:并发处理的最大请求数,默认值为75

enableLookups

是否反查域名,取值为:truefalse。为了提高处理能力,应设置为false

connectionTimeout

网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

maxThreads

表示最多处理多少个连接

minSpareThreads

表示即使没有人使用最少也会开这么多空线程等待

maxSpareThreads

表示最多可以开启多少个空线程等待

acceptCount

当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。

注:其中和最大连接数相关的参数为maxProcessorsacceptCount。如果要加大并发连接数,应同时加大这两个参数。

2、tomcat内存设置

    Windows:

    Jdk1.6:

        set JAVA_OPTS=-server -Xms2048m -Xmx2048m   -XX:PermSize=64M -XX:MaxPermSize=256M

    Jdk1.8:

    set JAVA_OPTS=-server -Xms2048m -Xmx2048m  -XX:MetaspaceSize=256M-XX:MaxMetaspaceSize=256M

    Linux:

     jdk1.6:

        JAVA_OPTS="-server -Xms2048m -Xmx2048m-XX:PermSize=64M -XX:MaxPermSize=256M"

    Jdk1.8:

    JAVA_OPTS=-server -Xms2048m -Xmx2048m  -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M

    常用的特殊参数:

         -XX:+HeapDumpOnOutOfMemoryError

    内存溢出时生成dump文件参数,dump文件可用于代码问题分析

    生成dump文件     

        通过jvm参数--XX:+HeapDumpOnOutOfMemoryError可以让JVM在出现内存溢出时候Dump出当前的内存转储快照。

        -XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,如不设置,默认存储在jvm 运行环境目录。如我们这使用的是tomcat 默认dump文件存储在 tomcat/bin 目录下。也可以指定文件名称,如果不指定文件名,默认文件示例如下:java_pid2821.hprof,其中2821为Java进程号。

转载请注明原文地址: https://www.6miu.com/read-2150130.html

最新回复(0)