-XX:+PrintGC  每次触发GC的时候打印相关日志

-XX:+PrintGCDetails 每次触发GC的时候更详细的相关日志

-XX:+UseSerialGC 串行回收

-Xms 堆初始值(要设置成和-Xmx一样大,否则会频繁的GC)

-Xmx 堆最大可用值

-Xmn 新生代堆最大可用值

-XX:SurvivorRatio (存活区比例)指的是新生代中eden : form/to 区的比例(from space 和 to space 一样大)默认 eden 要大一点,因为要新创建的对象都要先放在eden 区,默认是大致8:1:1 ,如果项目很大的情况,新生代对象比较多,也有设置2:1:1,根据实际情况

-XX:NewRatio(新生代:老年代)  一般默认配比为1:2

-XX:+HeapDumpOnOutOfMemoryError 打印堆溢出报错信息

  java虚拟机对非堆区内存配置的两个参数:
   1、-XX:PermSize:表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存)
   2、-XX:MaxPermSize:表示对非堆区分配的内存的最大上限。

用例:

public class App {
public static void main(String[] args) { // java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存
System.out.println("java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "M");
// java虚拟机挖过来而又没有用上的内存
System.out.println("java虚拟机挖过来而又没有用上的内存" + Runtime.getRuntime().freeMemory() / 1024 / 1024 + "M");
// java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存
System.out.println("java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存"
+ Runtime.getRuntime().totalMemory() / 1024 / 1024 + "M"); }
}

java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存7257M
java虚拟机挖过来而又没有用上的内存485M
java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存491M

 

JVM 配置:-Xmx20m -Xms5m   堆最大可用值是20M,堆初始值为5M

java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存18M
java虚拟机挖过来而又没有用上的内存4M
java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存5M //堆可用初始化值为5M

当我向堆内存里面申请一个Byte b[] = new Byte[3  * 1024 * 1024] 的数组时候:

java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存18M
java虚拟机挖过来而又没有用上的内存2M
java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存15M // 肯定要大于5 + 3

JVM配置新生代比例参数:-Xms20m -Xmx20m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC

[GC (Allocation Failure) [DefNew: 505K->255K(768K), 0.0013863 secs] 505K->430K(20224K), 0.0014558 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存19M  // -Xmx20m  堆最大可用值
java虚拟机挖过来而又没有用上的内存19M
java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存19M  //-Xms20m   堆可用的初始值
Heap
def new generation total 768K, used 514K [0x00000000fec00000, 0x00000000fed00000, 0x00000000fed00000)  //Xmn1m  新生代堆可用
eden space 512K, 50% used [0x00000000fec00000, 0x00000000fec40bd0, 0x00000000fec80000) //-XX:SurvivorRatio=2  eden:form:to = 2:1:1
from space 256K, 99% used [0x00000000fecc0000, 0x00000000fecffff8, 0x00000000fed00000)
to space 256K, 0% used [0x00000000fec80000, 0x00000000fec80000, 0x00000000fecc0000)
tenured generation total 19456K, used 174K [0x00000000fed00000, 0x0000000100000000, 0x0000000100000000)
the space 19456K, 0% used [0x00000000fed00000, 0x00000000fed2b9d0, 0x00000000fed2ba00, 0x0000000100000000)
Metaspace used 2577K, capacity 4486K, committed 4864K, reserved 1056768K
class space used 282K, capacity 386K, committed 512K, reserved 1048576K

-XX:NewRatio=2   新生代内存:老年代 = 1 : 2

JVM 常见参数配置的更多相关文章

  1. 性能测试三十六:内存溢出和JVM常见参数及JVM参数调优

    堆内存溢出: 此种溢出,加内存只能缓解问题,不能根除问题,需优化代码堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java h ...

  2. 深入理解java虚拟机笔记补充-JVM常见参数设置

    JVM 常见参数设置 内存设置 参数 -Xms:初始堆大小,JVM 启动的时候,给定堆空间大小. -Xmx:最大堆大小,如果初始堆空间不足的时候,最大可以扩展到多少. -Xmn:设置年轻代大小.整个堆 ...

  3. MyEclipse中Tomcat对应JVM的参数配置

    MyEclipse中Tomcat对应JVM的参数配置: -Xmx512M -Xms256M -XX:MaxPermSize=256m

  4. JVM系列(1)- JVM常见参数及堆内存分配

    常见参数配置 基于JDK1.6 -XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收模式 -XX:+PrintGCDetails 打印更详细的GC日志 ...

  5. Redis入门很简单之三【常见参数配置】

    Redis入门很简单之三[常见参数配置] 博客分类: NoSQL/Redis/MongoDB redisnosql缓存中间件memcached  Redis的一下常见设置都是通过对redis.conf ...

  6. java架构之路-(JVM优化与原理)JVM之G1回收器和常见参数配置

    过去的几天里,我把JVM内部的垃圾回收算法和垃圾回收器.还剩下最后一个G1回收器没有说,我们今天数一下G1回收器和常见的参数配置. G1回收器 G1 (Garbage-First)是一款面向服务器的垃 ...

  7. Java虚拟机-JVM各种参数配置大全详细

      usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K ...

  8. Java虚拟机--------JVM常见参数

    JVM 调优常见参数 Java1.7的jvm参数查看一下官方网站. http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java. ...

  9. 【JVM】参数配置

    [一]JVM参数配置释意 编号 配置项 例子 含义 备注 1 -Xmx -Xmx20m java应用最大可用内存为20M  整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般固 ...

随机推荐

  1. shell 之 case。。。esac多分支选择

    case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作,如果没有任何值能够匹配,就执行预先设置的默认 ...

  2. 利用动态资源分配优化Spark应用资源利用率

    背景 在某地市开展项目的时候,发现数据采集,数据探索,预处理,数据统计,训练预测都需要很多资源,现场资源不够用. 目前该项目的资源3台旧的服务器,每台的资源 内存为128G,cores 为24 (co ...

  3. mac 使用命令行向 github 提交代码

    让 mac 本地和自己的 github 网站建立连接(ssh) 下载安装 git 网址: https://git-scm.com/downloads 查看安装是否成功: git -version $ ...

  4. 时间序列数据库(TSDB)初识与选择(InfluxDB、OpenTSDB、Druid、Elasticsearch对比)

    背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词.大数据.人工智能.物联网.机器学习.商业智能.智能预警啊等等. 以前的系统,做数据可视化,信息管理,流程控制.现在业务已经不仅仅满足于这 ...

  5. ES6中的Promise使用总结

    One.什么是Promise? Promise是异步编程的解决方案,而它本身也就是一个构造函数,比传统的异步解决[回调函数]和[事件]更合理,更强大. Two.Promise有何作用? 作用:解决回调 ...

  6. git重新学习

    一个学习网址:https://learngitbranching.js.org/ 一.对于一个新的远程空仓库 本地新建文件后推送 #初始化 git init #添加文件 git add README. ...

  7. mysql 多个字段重复记录查询

    select * from productstockquantity t where () ORDER BY t.CombinationI

  8. 【题解】NOIP 2015 子串

    淦!这题我做了三个月啊 题目描述 有两个仅包含小写英文字母的字符串 \(A\) 和 \(B\). 现在要从字符串 \(A\) 中取出 \(k\) 个互不重叠的非空子串,然后把这 \(k\) 个子串按照 ...

  9. javaScript 基础知识汇总(八)

    1.Map Set WeakMap 和WeakSet Map 是一个键值对的集合,主要的方法包括: new Map() 创建Map map.set(key,value)  根据键(key)存储值(va ...

  10. C++ json解决方案

    前段时间用到C++来封装com 因此从数据转换上我采用的Json来当两种语言的传递方式,现做下json的序列化与反序列化方案的总结: Rapidjson 文档地址:http://rapidjson.o ...