测试方法:在命令行下用 java -XmxXXXXM -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息。

  • 堆(Heap)和非堆(Non-heap)内存
    按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
  • 堆内存分配
    JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
  • 非堆内存分配
    JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
  • JVM内存限制(最大值)
    首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

    所以说设置VM参数导致程序无法启动主要有以下几种原因:

    1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

    2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

JVM 可设置最大内存相关推荐

  1. jvm性能调优 - 07线上应用部署JVM实战_栈内存与永久代预估与设置

    文章目录 Pre 基于案例,说说不合理设置内存的反面示例 大促期间,流量激增 少数请求需要几十秒处理,导致老年代内存占用变大 老年代对象越来越多导致频繁垃圾回收 小结 如何合理设置永久代大小? 如何合 ...

  2. jvm 设置 直接内存 大小

    2019独角兽企业重金招聘Python工程师标准>>> 直接内存大多时候也被称为堆外内存,自从 JDK 引入 NIO 后,直接内存的使用也越来越普遍.通过 native 方法可以分配 ...

  3. 浅谈Metaspace内存溢出原因及JVM参数设置

    浅谈Metaspace内存溢出原因及JVM参数设置 1.Metaspace内存溢出(oom) 日志 原因分析 从Java8开始,Java中的内存模型引入了一个称为元空间(Metaspace)的新内存区 ...

  4. JVM虚拟机(3)_设置栈内存大小

    JVM虚拟机(3)_设置栈内存大小 -Xss256k //  -Xss(需要设置的栈内存大小)

  5. JVM XMX设置多大比较好,Docke容器里该怎么设置JVM呢@无界编程

    XMX是JVM的最大堆内存大小,XMS是JVM的初始堆内存大小. 不管是工作还是面试经常遇到一个问题就是XMX到底设置多大比较好? 网上的答案大多是说XMX和XMS设置为一样大,但是没有说到底XMX设 ...

  6. Java调优之jvm和线程的内存分析

    2019独角兽企业重金招聘Python工程师标准>>> [本文地址] 本文永久地址是:http://www.mzone.cc/article/321.html 这几天因为自己开发的一 ...

  7. 追踪JVM中的本地内存

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 转载自公众号:锅外的大佬 1.概述 有没有想过为什么Java应用程序通过众所周知的-Xms和 ...

  8. 72.JVM参数设置(各种jvm参数)、分析;Total Heap;The Young Generation;

    72.JVM参数设置.分析 JVM系列三:JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于 ...

  9. 后端学习 - JVM(上)内存与垃圾回收

    JVM 架构图 文章目录 一 JVM 简介 二 类加载子系统: 1 作用 2 类的三个加载过程 3 类加载器的分类 4 双亲委派机制 5 两个 class 对象为同一个类的必要条件 三 运行时数据区: ...

最新文章

  1. 内网渗透测试:内网信息收集与上传下载
  2. 商业软件授权模式的反思--转载
  3. MySQL中concat函数(连接字符串)
  4. 计算机图形学Web前端笔记-定位并移动到指定坐标点(two.js理论及实现)
  5. linux 基础 —— 网络管理
  6. 计算机系统中引入多道程序设计的目的在于,引入多道程序的目的在于什么
  7. 油猴Tampermonkey及脚本使用
  8. js 根据公历日期 算出农历_利用Javascript获取当前日期的农历日期
  9. 在html中页面不全,网页显示不全,教您网页显示不全怎么办
  10. 十一、非参数检验:使用python进行卡方两样本独立性检验
  11. vue 中点击叉号,关闭div的方法
  12. sinr是什么意思_信噪比有负的吗?表示什么意思?
  13. VSCode-解决中文乱码和Run in terminal问题控制台不能输入
  14. vc控制计算机关机,192上位机VC MFC实现电脑的重启关机注销功能
  15. 如何解决PS“不能完成请求,因为意外的遇到文件尾”?
  16. Linux:centos7安装下载工具aria2
  17. SpringBoot配置多个RabbitMq
  18. html滚动字幕如何调色,如何通过制作滚动字幕的软件实现这种片尾的向上滚动字幕效果...
  19. 【iOS开发】——Category底层原理、Extension、关联对象
  20. cad批量逐个填充lisp_快速填充的多选问题 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

热门文章

  1. 企业真的有必要购买WMS系统吗?
  2. 平台卖家要不要做独立站?
  3. QQ总显示服务器请求中,网站添加QQ登陆 报错 可能是服务器无法请求https协议 解决方法...
  4. Leetcode每日一题:16.3sum-closest(最接近的三数之和)
  5. 公共方法之运算符,len,del,max,min,range,enumerate
  6. 对最大熵模型为什么要最大化熵的一点理解
  7. Kotlin协程的迷惑
  8. Nginx跨域配置、限制连接、限制下载速度
  9. 跨域解决方案CROS最简单演示——JSP演示示例
  10. MyCat 数据库分片极简体验