JVM内存限制和调整

今天用java -jar执行一个jar文件提示内存不够,需要设置虚拟机的堆大小。以下是参考资料:

堆(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以上的处理器就不会有限制了。

通常,我们为了避免内存溢出等问题,需要设置环境变量
  JAVA_OPTS -Xms256M -Xmx512M 等,【对于服务器,一般都设置成一样的】
  但是有的时候可能这样的设置还会不行(比如,当Server应用程序加载较多类时,即jvm加载类时,永久域中的对象急剧增加,从而使jvm不断调整永久域大小,为了避免调整),你可以使用更多的参数配置,
  如: java -Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
  其中,使用 -XX:MaxPerSize标志来增加永久域的大小,-XX:PerSize标志设置初始值

参考:
http://wallimn.javaeye.com/blog/505610

转载于:https://my.oschina.net/acmfly/blog/113256

JVM内存限制和调整相关推荐

  1. javaweb学习总结九(xml解析以及调整JVM内存大小)

    一:解析XML文件的两种方式 1:dom,document object model,文档对象模型. 2:sax,simple API for XML. 3:比较dom和sax解析XML文件的优缺点 ...

  2. Docker 容器 jvm 内存参数调整优化

    前言 在使用Docker部署java 项目时,发现容器占用内存很高,导致服务器内存压力大,一个简单的boot项目,占用达到1G多内存,有些容器甚至达到快3G内存,并且发现java -jar 启动的项目 ...

  3. 调整了一下JVM内存,程序快了700%,Java程序优化笔记

    Java程序性能优化是一个永远逃不开的话题,优化无处不在!一个偶然间,小编得到了一份Java程序性能优化的笔记,小编读完这份笔记后大为惊叹,实在是写的太好了,不忍独乐乐,于是把这份笔记免费分享出来,供 ...

  4. 记录一次生产环境下的jvm内存泄露问题和分析解决过程!

    作者:未完成交响曲,资深Java工程师!目前在某一线互联网公司任职,架构师社区合伙人! 发现异常 首先通过我们内部搭建的日志平台发现我们线上环境一个java应用有大量的http接口请求超时,登录lin ...

  5. JVM 内存优化设置

    from:http://blog.sina.com.cn/s/blog_707577700100vy4m.html 在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好 ...

  6. Eclipse中JVM内存设置

    为什么80%的码农都做不了架构师?>>>    eclipse.ini内存设置 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxP ...

  7. 全面认识Eclipse中JVM内存设置

        这里向大家描述一下Eclipse中如何进行JVM内存设置,JVM主要管理两种类型的内存:堆和非堆.简单来说堆就是Java代码可及的内存,是留给开发人员使用的:非堆就是JVM留给自己用的,所以方 ...

  8. jvm 内存结构默写

    2019独角兽企业重金招聘Python工程师标准>>> jvm内存包括: 程序计数器: 是jvm 中较小的一块内存,每一个线程一个计数器.主要保存当前线程执行的虚拟字节码指令的内存地 ...

  9. JVM内存管理及GC机制

    转载自:http://blog.csdn.net/suifeng3051/article/details/48292193 一.概述 Java GC(Garbage Collection,垃圾收集,垃 ...

最新文章

  1. Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)
  2. new,delete总结
  3. Spring Boot 多模块项目实践(附打包方法)
  4. 龙博方案网贵宾订购版是综合通讯、安全和电子商务的组件包
  5. hana数据库导入mysql_【SAP HANA】新建表以及操作数据(3)
  6. 找了前锤子CTO钱晨加入SLG ,百度终于认了……新的一年第4批CDN牌照公布;亚马逊开设云计算技术培训工作 | 极客头条...
  7. Unity手游之路三 基于Unity+Java的聊天室源码
  8. 以下构成python循环结构的方法中_《Python程序设计与案例教程》课件chap5循环结构程序设计.ppt...
  9. Apache下的FileUtils.listFiles方法简单使用技巧
  10. kepware rest服务器_指南安全的KEPServerEX部署-Kepware.PDF
  11. Apollo ROS安装教程
  12. 贪心算法及其经典例题
  13. 数字藏品平台金乌元宇助力中国数字文创发展
  14. python wifi密码字典
  15. 微信小程序入门教程学习笔记
  16. OpenStack和Open Source MANO:NFV部署两大支柱
  17. 【收藏】清风算法后网站首页/列表页/内容页/主题聚合页标题格式
  18. Android连连看设计思路,0049 JavaScript游戏连连看设计和编程思路
  19. 普通话考试是从题库里抽吗_普通话考试的作品朗读是不是从60篇范文中抽取一篇?...
  20. org.activiti.engine.ActivitiException: couldn‘t resolve duedate问题的一个解决

热门文章

  1. PS如何快速制作草坪文字图案效果
  2. [笔记]Windows核心编程《番外篇》几种常见的执行命令行方法
  3. LeetCode算法日记
  4. 17岁恋爱和27岁恋爱有什么区别?
  5. 2022-09-15 Windows11 C盘下面看不到AppData
  6. MATLAB截取图像特定区域
  7. Google Chrome 背后的天才
  8. java:3: 错误: 编码 GBK 的不可映射字符 (0x8E)
  9. HTML基础学习之(一)安装前端开发工具Visual Studio Code
  10. 机票管理系统(源码+文档)