参数设置背景

在做java开发时尤其是大型软件开发时经常会遇到内存溢出的问题,比如说OutOfMemoryError等。这是个让开发人员很痛苦、也很纠结的问题,因为我们有时不知道什么样的操作导致了这种问题的发生。所以我们不得不通过不断的审查、优化自己的代码结构。但是有时我们会发现有些时候不单单是通过重构自身的代码就能够解决这样的问题,因为也可能是由于我们对java虚拟机运行时的内存分配的不得当导致了内存溢出现象的不断发生。

为了解决这一问题,java开发团队提供了一个用户自定义的方式按需配置java虚拟机运行时的所需的内存——通过参数配置的形式实现参数分配自定义化。

JVM按照其存储数据的内容将所需内存分配为堆区非堆区两个部分:
  • 堆区即为通过new的方式创建的对象(类实例)所占用的内存空间
  • 非堆区即为代码、常量、外部访问(如文件访问流所占资源)等
虽然java的垃圾回收机制虽然能够很好的解决内存浪费的问题,但是这种机制也仅仅的是回收堆区的资源,而对于非堆区的资源就束手无策了,针对这样的资源回收只能凭借开发人员自身的约束来解决。就算是这样(堆区有java回收机制、非堆区开发人员能够很好的解决),当运行时所需内存瞬间激增的时候JVM无奈的也要中止程序的运行。所以本文讲述的是如何解决后者的问题。

常见参数种类(配置内存)

  • 配置堆区:-Xms 、-Xmx、-XX:newSize、-XX:MaxnewSize、-Xmn
  • 配置非堆区:-XX:PermSize、-XX:MaxPermSize

堆区参数配置

1、-Xms :表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍需按照实际情况进行分配。有可能真的按照这样的一个规则分配时,设计出的软件还没有能够运行得起来就挂了。
2、-Xmx: 表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。但是开发过程中,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。
一般来讲对于堆区的内存分配只需要对上述两个参数进行合理配置即可。

非堆区参数配置

1、-XX:PermSize:表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存)
2、-XX:MaxPermSize:表示对非堆区分配的内存的最大上限
:    
在配置之前一定要慎重的考虑一下自身软件所需要的非堆区内存大小,因为此处内存是不会被java垃圾回收机制进行处理的地方。并且更加要注意的是 最大堆内存与最大非堆内存的和绝对不能够超出操作系统的可用内存。

参考:http://blog.csdn.net/kok1992/article/details/44774967

转载于:https://www.cnblogs.com/kaituorensheng/p/6551457.html

JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别相关推荐

  1. JAVA(-Xms,Xmx,Xmn-XX:newSize,-XX:MaxnewSize,-XX:PermSize,-XX:MaxPermSize)区别

    1.-Xms:表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍需按照实际情况进行分配. 2.-Xmx:表示java虚拟机堆区内存可被分配的最大上限,通常为操 ...

  2. -Xms -Xmx -XX:PermSize -XX:MaxPermSize 的理解和区别

    JVM按照其存储数据的内容将所需内存分配为堆区与非堆区两个部分: 所谓堆区即为通过new的方式创建的对象(类实例)所占用的内存空间: 非堆区即为代码.常量.外部访问(如文件访问流所占资源)等. 然而虽 ...

  3. 开发经验(三):堆栈内存设置Xms、Xmx、Permsize、MaxPermsize

    文章目录 一.概念扫盲 二.使用技巧 1)开发环境 2)生产环境 三.结论 一.概念扫盲 弄明白Xms.Xmx.Permsize.MaxPermsize这几个名词的设置,就不得不先弄明白Java程序运 ...

  4. java Xms Xmx

    目录 java Xms && Xmx -Xms和-Xmx java Xms && Xmx 在运行java的jar包时,经常使用的命令 nohup java -Xmx81 ...

  5. java newsize_JVM中的-Xms -Xmx -XX:newSize -XX:MaxnewSize -Xmn -XX:PermSize -XX:MaxPermSize区别介绍...

    一.配置参数使用条件 在不断重构代码的情况下,仍然不能解决内存溢出的问题(OutOfMemoryError等),这种情况下就需要使用JVM的配置参数对JVM运行时各个区域的内存情况进行相应的分配. 二 ...

  6. java -Xms -Xmx -XX:PermSize -XX:MaxPermSize

    在做java开发时尤其是大型软件开发时经常会遇到内存溢出的问题,比如说OutOfMemoryError等.这是个让开发人员很痛苦.也很纠结的问题,因为我们有时不知道什么样的操作导致了这种问题的发生.所 ...

  7. java -Xms -Xmx -XX:PermSize -XX:MaxPermSize 作用详解

    在做java开发时尤其是大型软件开发时经常会遇到内存溢出的问题,比如说OutOfMemoryError等.这是个让开发人员很痛苦.也很纠结的问题,因为我们有时不知道什么样的操作导致了这种问题的发生.所 ...

  8. tomcat 启动参数 Xms, Xmx, XX:MaxNewSize, XX:PermSize, -XX:MaxPermSize, Djava.awt.headless

    在 tomcat/bin/catalina.sh 的 第一行#!/bin/sh 下添加 JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxNewSiz ...

  9. Java -Xms -Xmx -Xss -XX:MaxNewSize -XX:MaxPermSize含义记录

    出现java.lang.OutOfMemoryError异常时,常使用的方法便是将如下配置语句: -Xms512m -Xmx512m -Xss1024k -XX:MaxNewSize=256M -XX ...

最新文章

  1. python2x与3x下使用urlretrieve下载文件
  2. 【自动驾驶】11.百度Apollo对ROS的优化
  3. html5+开发window桌面图标,js模仿windows桌面图标排列算法具体实现(附图)
  4. opencv中vc14和vc15的区别?
  5. ftp 工具_ftp工具,ftp工具有哪些
  6. 深入理解 JVM Class文件格式(四)
  7. php用cdn打不开,开启 CDN 后 wordpress 后台打不开的解决办法
  8. Python中sort()和sorted()的区别
  9. Flutter State生命周期 Flutter Widget生命周期 Flutter 应用程序生命周期
  10. Mysql的limit用法
  11. docker 安装依赖_史上最全Docker环境安装指南-让安装docker简单到爆
  12. 使用QRCode轻松实现二维码扫描下载的功能
  13. 《Microsoft SQL Server 2008 Internals》读书笔记--目录索引
  14. vs2008 sp1 C++ 发布程序 .
  15. 如何压缩PDF文件的大小
  16. table——caption
  17. HiC-Pro | HiC数据处理工具
  18. 陈佩斯曾受邀喜剧综艺:被酬劳吓的恍惚好几天
  19. Veracrypt和Cryptomator的使用方式对比
  20. 二级计算机考试准考证打印入口

热门文章

  1. 循环神经网络 (RNN)
  2. Android Telephony分析(七) ---- 接口扩展(异步转同步)
  3. java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法
  4. 画活动图教程_二次元人物头发怎么画?画好头发有什么技巧?
  5. 计算机辅助教学( ),27075 计算机辅助教学
  6. 基于uml的系统分析的网上商城_UML建模工具Enterprise Architect最新版有哪些新功能呢?立即查看...
  7. 工作分配问题pascal程序
  8. HDU 6089 Rikka with Terrorist (线段树)
  9. java内部类文件,Java内部类学习
  10. 根据控件句柄读控件在内存的数据_WPF 2020界面开发新纪元——Accordion控件、图表功能升级...