首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从JVM获取堆和permgen的最大大小?

要从JVM获取堆和permgen的最大大小,您可以使用以下命令:

代码语言:txt
复制
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|MaxPermSize'

这个命令将打印出JVM的堆和permgen的最大大小。其中,HeapSize是堆的大小,PermSize和MaxPermSize是permgen的大小。

需要注意的是,permgen已经被元空间取代,因此在较新的JVM版本中,您可能需要使用以下命令来获取元空间的大小:

代码语言:txt
复制
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|MetaspaceSize|MaxMetaspaceSize'

这个命令将打印出JVM的堆和元空间的最大大小。其中,HeapSize是堆的大小,MetaspaceSize和MaxMetaspaceSize是元空间的大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java8内存模型—永久代(PermGen)和元空间(Metaspace)

这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。...下面我们就来看看 Metaspace 与 PermGen space 的区别。 三、Metaspace(元空间)   其实,移除永久代的工作从JDK1.7就开始了。...,JDK 1.6下,会出现“PermGen Space”的内存溢出,而在 JDK 1.7和 JDK 1.8 中,会出现堆内存溢出,并且 JDK 1.8中 PermSize 和 MaxPermGen 已经无效...元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。...而是指定 MetaSpaceSize 和 MaxMetaSpaceSize的大小。输出结果如下: 从输出结果,我们可以看出,这次不再出现永久代溢出,而是出现了元空间的溢出。

36200

【剑指offer】JVM经典面试题

从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收...-Xmx 设置堆的最大空间大小 -Xms 设置堆的最小空间大小 5.Perm Space中保存什么数据?会引起OutOfMemory吗? 加载class文件。...补充:Java8内存模型—永久代(PermGen)和元空间(Metaspace) 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 ?...不过方法区和“PermGen space”又有着本质的区别。...-XX:MaxMetaspaceSize:分配给类元数据空间的最大值,超过此值就会触发Full GC,此值默认没有限制,但应取决于系统内存的大小。JVM会动态地改变此值。

1.3K31
  • 聊聊jvm的PermGen与Metaspace

    =N来设置最大大小,但是由于应用程序string.intern通常是不可预测和不可控的,因此不好设置这个大小。...设置不好的话,常常会引起 java.lang.OutOfMemoryError: PermGen space java7,8的字符串常量池在堆中实现 字符串常量池被限制在整个应用的堆内存中,在运行时调用...如果没有使用-XX:MaxMetaspaceSize来设置类的元数据的大小,其最大可利用空间是整个系统内存的可用空间。JVM也可以增加本地内存空间来满足类元数据信息的存储。...,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集 小结 将常量池从PermGen剥离到heap中,将元数据从PermGen剥离到元数据区,去除PermGen的好处如下: 将字符串常量池从...PermGen是HotSpot的实现特有的,JRockit并没有PermGen一说 doc Java8内存模型—永久代(PermGen)和元空间(Metaspace) JVM内存调优相关的一些笔记(杂)

    2K10

    Java8内存模型—永久代(PermGen)和元空间(Metaspace)

    这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。...下面我们就来看看 Metaspace 与 PermGen space 的区别。 三、Metaspace(元空间)   其实,移除永久代的工作从JDK1.7就开始了。...从上述结果可以看出,JDK 1.6下,会出现“PermGen Space”的内存溢出,而在 JDK 1.7和 JDK 1.8 中,会出现堆内存溢出,并且 JDK 1.8中 PermSize 和 MaxPermGen...元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。...而是指定 MetaSpaceSize 和 MaxMetaSpaceSize的大小。输出结果如下: ? 从输出结果,我们可以看出,这次不再出现永久代溢出,而是出现了元空间的溢出。

    55120

    jvm运行时数据区表示

    规范把方法区从逻辑上看做是属于堆的一部分,不同的实现可以选择是否要对这块代码做垃圾回收和压缩,但是虚拟机规范本身并不强制规定方法区的位置(JDK 7 规范 JDK 8 规范 JDK 9 规范 JDK 10...在jdk 7中,通过 -XX:MaxPermSize来决定最大的永久代大小,-XX:PermSize来控制方法区的初始大小。...注意这里讲到 PermGem 是指permanent generation,它是从垃圾回收的角度来产生了一个generation的概念 在JVM中,有些对象很快被回收,有的则相对比较慢,为了优化不同的对象回收的场景...如果这个堆是从广义上讲java heap的定义:哪儿存储了java对象,哪儿就是 java heap,那它就是在堆中 (java.lang.String的一些实例会存在这里) 如果堆指的是运行时数据区中...在任意的时刻,栈本身都会对应着栈的深度,它支持JVM中的任何类型,除去long和double会占据两个单元,其它类型都只占据一个单元 动态连接 class文件的代码中,对要执行的方法和变量都是通过符号引用获取的

    44720

    Java8内存模型—永久代(PermGen)和元空间(Metaspace)

    这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。...下面我们就来看看 Metaspace 与 PermGen space 的区别。 三、Metaspace(元空间) 其实,移除永久代的工作从JDK1.7就开始了。...“PermGen Space”的内存溢出,而在 JDK 1.7和 JDK 1.8 中,会出现堆内存溢出,并且 JDK 1.8中 PermSize 和 MaxPermGen 已经无效。...元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。...而是指定 MetaSpaceSize 和 MaxMetaSpaceSize的大小。输出结果如下: 从输出结果,我们可以看出,这次不再出现永久代溢出,而是出现了元空间的溢出。

    1.4K20

    OutOfMemory及其解决方法「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 一、内存溢出类型 1、java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆。...堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。...所以服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小。...注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。...以上的处理器就不会有限制了 提示:注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。

    12K11

    Xms Xmx PermSize MaxPermSize 区别

    “在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。  可以看出JVM主要管理两种类型的内存:堆和非堆。...堆内存分配  JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。...默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;  空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。...非堆内存分配  JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。...通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。

    4.1K10

    Java8内存结构的改变~

    这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。...下面我们就来看看 Metaspace 与 PermGen space 的区别。 三、Metaspace(元空间) 其实,移除永久代的工作从JDK1.7就开始了。...从上述结果可以看出,JDK 1.6下,会出现“PermGen Space”的内存溢出,而在 JDK 1.7和 JDK 1.8 中,会出现堆内存溢出,并且 JDK 1.8中 PermSize 和 MaxPermGen...元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。...而是指定 MetaSpaceSize 和 MaxMetaSpaceSize的大小。输出结果如下: ? 从输出结果,我们可以看出,这次不再出现永久代溢出,而是出现了元空间的溢出。

    1.2K20

    Tomcat报错—Tomcat内存溢出及大小调整

    一般JVM内存溢出(OOM),分为堆内存溢出和PermGen区内存溢出: 1:java.lang.OutOfMemoryError: PermGen space(PermGen区内存溢出) PermGen...这种错误常常出现在WEB服务器在对项目中的JSP进行pre—compile(预编译)的时候, 还有就是项目使用了很多的第三方的jar包,这个jar的大小超过了JVM默认的大小(4M), 也是会出现此错误的...2:java.lang.OutOfMemoryError: Java heap space(堆溢出) JVM堆是指java程序运行过程中JVM可以调配使用的内存空间。...可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。 Heap size 的大小是Young Generation 和Tenured Generaion 之和。...提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同, 而-Xmn为1/4的-Xmx值。

    3.1K10

    深入理解JVM虚拟机1:JVM内存的结构与消失的永久代

    该系列博文会告诉你如何从入门到进阶,一步步地学习JVM基础知识,并上手进行JVM调优实战,JVM是每一个Java工程师必须要学习和理解的知识点,你必须要掌握其实现原理,才能更完整地了解整个Java技术体系...堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配; 方法区存储类信息...在通过一张图来了解如何通过参数来控制各区域的内存大小 ? 控制参数 -Xms设置堆的最小空间大小。 -Xmx设置堆的最大空间大小。 -XX:NewSize设置新生代最小空间大小。...没有直接设置老年代的参数,但是可以设置堆空间大小和新生代空间大小两个参数来间接控制。 老年代空间大小=堆空间大小-年轻代大空间大小 从更高的一个维度再次来看JVM和系统调用之间的关系 ?...关于方法区和永久代: 在HotSpot JVM中,这次讨论的永久代,就是上图的方法区(JVM规范中称为方法区)。《Java虚拟机规范》只是规定了有方法区这么个概念和它的作用,并没有规定如何去实现它。

    51140

    站在操作系统层面看JVM

    如何将Natvie Heap中字节码区域中的字节码解释为本平台机器码然后执行,这个在Jvm Code中已经写好了,具体如何搞的,就是关于解释器那堆东西,不是本文重点。...堆空间内存如何使用这就是JVM程序可以决定了,JVM程序利用可以掌控的堆空间模拟了一个CPU执行环境,jvm程序提供的解释器和执行引擎等组件充当CPU,堆空间中存放的字节码看做是内存上的机器指令,程序计数器充当...Native Memory没有相应的参数来控制大小,其大小依赖于操作系统进程的最大值(对于32位系统就是3~4G,各种系统的实现并不一样)。...永久代(PermGen区)是有大小限制的,因此如果加载的类太多,很有可能导致永久代内存溢出,即java.lang.OutOfMemoryError: PermGen,由于PermGen内存经常会溢出,因此...操作系统会创建一个进程来执行这个java可执行程序,而每个进程都有自己的虚拟地址空间,JVM 用到的内存(包括堆、栈和方法区)就是从进程的虚拟地址空间上分配的。

    67230

    元空间和永久代的区别

    永久代是一片连续的堆空间,在JVM启动之前通过在命令行设置参数-XX:MaxPermSize来设定永久代最大可分配的内存空间,默认大小是64M(64位JVM由于指针膨胀,默认是85M)。...从PermGen移除interned strings的更多信息查看这里。 注:从JDK7开始永久代的移除工作,贮存在永久代的一部分数据已经转移到了Java Heap或者是Native Heap。...而且应该为PermGen分配多大的空间很难确定,因为PermSize的大小依赖于很多因素,比如JVM加载的class的总数,常量池的大小,方法的大小等。...从PermGen分离类的元数据信息到Metaspace,由于Metaspace的分配具有和Java Heap相同的地址空间,因此Metaspace和Java Heap可以无缝的管理,而且简化了FullGC...其中建议JVM的实现中将类的元数据放入 native memory, 将字符串池和类的静态变量放入Java堆中.

    6K10

    Linux下 Tomcat内存溢出

    Tomcat本身不能直接在计算机上运行,需要依赖于操作系统和一个Java虚拟机。JAVA程序启动时JVM会分配一个初始内存和最大内存给APP。...JVM Heap的值,JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。...解释说明:PermGen space是指内存的永久保存区域。这个区域主要存放Class和Meta信息,Class在被Load时就会被放入PermGen space。...即栈溢出 解释说明:JVM采用的是栈式的虚拟机,函数的调用过程都体现在堆栈和退栈上。...“m”说明单位是MB,否则默认是KB 2.一般使用物理内存的80%作为堆大小 3.一般把-Xms和-Xmx设为一样大 4.一般把-Xmn设置为-Xmx值的1/4 5.一般将堆的总大小的50%到60%分配给新生成的池

    3.5K10

    优化Java堆大小的5个技巧

    你需要查看每个角度,包括本地和PermGen需求以及从主机上查看物理内存可用性(CPU core)。 在较大的Java Heap和较小的本地Heap比赛中,32位虚拟机可能会变得相当棘手。...对于32位JVM,通常不推荐一个Java堆大小超过2 GB(-Xms2048m,-Xmx2048m),对于Java EE应用程序和线程来说这样将需要足够的内存和本机堆PermGen。...一个典型的32位JVM,Java堆大小设置在2 GB(使用分代&并发收集器)通常为500 MB YoungGen分配空间和1.5 GB的OldGen空间。...引起“多米诺效应”的原因有很多,但缺少JVM调优和处理故障转移的能力(短期额外负荷)是很常见的。如果JVM进程运行在80% + OldGen空间容量和频繁的垃圾收集,你如何预期故障转移场景?...“分而治之”策略包括拆分应用程序流量到多个JVM进程,下面提供一些拆分技巧: 1、减少每个JVM进程的Java堆大小(静态和动态的占用) 2、降低JVM调优复杂度。

    72010

    选择JDK1.8的理由之JVM内存变化

    JVM所有的对象信息都存放在堆内存中,相比栈内存,堆内存可以大的多,所以JVM一直通过对堆内存划分不同的功能区块实现对堆内存中对象管理。...中把存放元数据中的永久内存从堆内存中移到了本地内存(native memory)中,JDK8中JVM堆内存结构就变成了如下: 这样永久内存就不再占用堆内存,它可以通过自动增长来避免JDK7以及前期版本中常见的永久内存错误...JVM的参数:PermSize 和 MaxPermSize 会被忽略并给出警告(如果在启用时设置了这两个参数)。 Metaspace 内存分配模型 (最大区别)大部分类元数据都在本地内存中分配。...适时地监控和调整元空间对于减小垃圾回收频率和减少延时是很有必要的。持续的元空间垃圾回收说明,可能存在类、类加载器导致的内存泄漏或是大小设置不合适。...Jstat 和 JVisualVM两个工具,在我们使用b75版本进行测试时,已经更新了,但是还是能看到老的PermGen空间的出现。

    58720

    如何构造jvm的堆溢出和栈溢出

    构造堆溢出和栈溢出 Java虚拟机中描述了两种异常: 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常;—-栈溢出 如果在虚拟机中无法申请到足够多的内存空间...—-堆溢出 堆溢出 在java堆中只会产生OutOfMemoryError异常 首先,我们知道Java堆内存存放的是对象实例。...所以原理上只要我们不断创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清楚这些对象,也就是说当Eden区满的时候,GC被触发时,让GC误以为内存中的对象还存活着,那么在对象数量达到最大堆容量限制的时候就会产生内存溢出的异常...>(); while (true) { list.add(new OOMError()); } } } 虽然这里产生了堆溢出...如果不是内存泄露,也就是说内存中的对象确实都还必须存活,那么应该检查虚拟机的堆参数,看看是否还可以将机器物理内存调大,同时在代码上检查是否存在某些对象生命周期过长、持有状态时间过长的情况。

    1.5K30

    Tomcat之jvm及连接数设置

    ,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection...如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。...请注意:很多垃圾收集器的选项依赖于堆大小的设定。请在微调垃圾收集器使用内存空间的方式之前,确认是否已经正确设定了堆的尺寸。 ...-XX:MaxHeapFreeRatio=percentage as a whole number      改变垃圾回收之后和堆内存缩小之前可用堆内存的最大百分比,缺省值为70。...Unix中如何设置这些参数,请参阅Unix常用监控和管理命令 备注: #tomcat内存配置 JAVA_OPTS="-server -Xms512m -Xmx1024m -Xss1025k -XX:PermSize

    1.6K30

    比较两个日期大小和获取当前月最大天数的存储过程

    下面简单介绍sqlserver2008两个常用的存储过程 1、比较两个日期大小的存储过程 2、获取当前月份的最大天数的存储过程 1、创建比较两个日期大小的存储过程 1)创建比较两个日期大小的存储过程.../*** ** 作用:比较两个日期的大小 **输入参数:第一个日期,第二个日期 **输出参数:返回结果 **/ create proc [dbo]....第一个日期 @SecondDate varchar(30), --第二个日期 @IsCompare int output --返回结果 ) as begin --判断两个日期大小...-08-12 12:23:34','2016-08-13 14:23:34',@IsCompare output 3)执行结果 第一个日期小于第二个日期 1 第一个日期大于第二个日期 0 2、获取当前月份的最大天数的存储过程...1)创建存储过程 /*** *获取系统当前月的最大天数 ***/ create proc [dbo].

    32200
    领券