VM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
VM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。
说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出。
JVM最多可占用(堆内存)+ (永久区,非堆内存).
如果占满了,就算服务器还有剩余的内存,jvm也不能使用,照样会报"Out of memory"的错误。
分享到:
相关推荐
jvm参数优化后,tomcat稳定可靠,附件为通过长时间在线测试的配置参数文件
jvm优化;
JVM配置资料JVM配置资料JVM配置资料JVM配置资料
JVM性能优化笔记 ------------------------------------------
jvm 配置jvm参数 配置jvm参数
JVM 开发环境配置,JAVA开发环境配置
Java助力需要jvm学习及优化与性能瓶颈分析参考
很详细的关于Java虚拟机的PPT,对Java虚拟机的学习会有很大的帮助!
jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识...
JVM内存回收最全的手册书籍,详细介绍了各种内存回收算法,是Java程序员进阶的必备书籍
面试题必问的jvm性能优化相关,如何在实际项目中优化jvm,解决项目中性能问题。提升系统的稳定性,以及可维护性。
JVM运行时各种参数配置说明
现代JVM是一个具有灵活适应各种应用能力的软件,尽管很多应用能够在JVM的默认配置下运行良好,但是有些应用还是需要优化JVM配置以达到其性能要求。由于各种各样的应用能够运行在现在JVM上面,所以大量的JVM选项可以...
JVM优化方法
Jvm性能优化-JVM内存结构原理分析03
深入详解JVM内存模型与JVM参数详细配置,感兴趣的小伙伴们可以一块学习下。
JVM性能优化:线程锁优化
1、JVM参数推荐 2、Java运行时数据区 3、JVM内存模型 4、堆的内存划分 5、垃圾回收(GC) 6、JVM参数汇总
当前,以Hadoop、Spark为...这些大数据处理框架采用分布式架构,使用Java、Scala等面向对象语言编写,在集群节点上以Java虚拟机(JVM)为运行时环境执行计算任务,因此依赖JVM的自动内存管理机制来分配和回收数据对象.
深入JVM内核—原理、诊断与优化视频教程 深入JVM内核—原理、诊断与优化视频教程