博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM 常用参数
阅读量:7006 次
发布时间:2019-06-27

本文共 1109 字,大约阅读时间需要 3 分钟。

常见参数配置

  • -XX:+PrintGC 每次触发GC的时候打印相关日志
  • -XX:+UseSerialGC 串行回收
  • -XX:+PrintGCDetails 更详细的GC日志
  • -Xms 堆初始值
  • -Xmx 堆最大可用值
  • -Xmn 新生代堆最大可用值
  • -XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例.
  • -XX:NewRatio 配置新生代与老年代占比 1:2
  • -XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例

总结:在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率

堆内存大小配置

使用示例: -Xmx20m -Xms5m

当前堆最大内存 20M,堆初始化内存 5M

设置新生代比例参数

使用示例:-Xms20m -Xmx20m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC

当前堆最大内存 20M,初始化堆内存 20M,新生代最大可用内存 1M,Eden 区域和 form、to 区域的比例是 2:1:1,打印 GC 日志,使用串行回收

设置新生代与老年代比例参数

使用实例:-Xms20m -Xmx20m -XX:SurvivorRatio=2 -XX:NewRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC

当前堆最大内存 20M,初始化堆内存 20M,Eden 区域和 form、to 区域的比例是 2:1:1,新生代和老年代比例是 1:2,打印 GC 日志,使用串行回收

Java堆溢出

错误原因:java.lang.OutOfMemoryError: Java heap space 堆内存溢出

设置合适的堆大小:-Xms1m -Xmx100m -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError

最后的参数表示堆内存溢出出打印快照

虚拟机栈溢出

错误原因:java.lang.StackOverflowError 栈内存溢出

虚拟机栈溢出发生在递归调用,循环不会产生虚拟机栈溢出,除非循环里面嵌套递归

设置更大的深度,默认深度大概在 10000 左右

-Xss5m 设置最大调用深度

内存溢出与内存泄漏区别

内存溢出:申请空间超出系统能够提供的空间大小

内存泄露:内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,最终导致内存溢出

转载地址:http://yaytl.baihongyu.com/

你可能感兴趣的文章
U盘启动盘制作工具分享: 大白菜
查看>>
EditPlus 正则表达式
查看>>
HDUOJ----专题训练C
查看>>
Cannot lock storage /tmp/hadoop-root/dfs/name. The directory is already locked.
查看>>
BFS和DFS的java实现
查看>>
1tb等于多少g 1TB和500G有什么区别
查看>>
对象序列化与反序列化(二进制 byte[])
查看>>
显示系统托盘列表(并执行隐藏与显示)
查看>>
jstring 和char 之间的转换方法
查看>>
PullToRefresh的个性化扩展
查看>>
分布式服务框架ZooKeeper
查看>>
【转】android gravity属性 和 weight属性
查看>>
Android SDK上手指南:知识测试
查看>>
C#和JAVA中编写事务代码
查看>>
vuejs组件交互 - 03 - vuex状态管理实现组件交互
查看>>
SQL Server 2017 安装过程中的一点说明(有点意思)
查看>>
Qt编写的RTSP播放器+视频监控(vlc版本)
查看>>
一起谈.NET技术,关于Expression Tree和IL Emit的所谓的"性能差别"
查看>>
CGI, mod_perl, PHP, JSP性能比较
查看>>
密码库 链接
查看>>