了解非堆内存的参数配置

虚拟机还有一些内存用于方法区,线程栈和直接内存的使用。

方法区配置:
方法区主要存放类的元信息。
在JDK1.6和1.7版本中,可以使用-XX:PermSize和-XX:MaxPermSize配置永久区大小。其中-XX:PermSize表示初始的永久区大小,-XX:MaxPermSize表示最大永久区。

在JDK1.8中,永久区被彻底移除,使用了新的元数据区存放类的元数据。默认情况下,元数据区只受系统可用内存的限制,但依然可以使用参数-XX:MaxMetaspaceSize指定永久区的最大可用值

栈配置:
栈是每个线程私有的内存空间。在java虚拟机中可以使用-Xss参数指定线程的栈大小。

直接内存配置:
直接内存也是java程序中非常重要的组成部分,特别是NIO被广泛使用后,直接内存变得很普遍。直接内存跳过了java堆,使java程序可以直接访问原生堆空间,因此,从一定程度上加快了内存空间的访问速度。但是,使用直接内存一定可以提高内存访问速度也是不正确的。

最大可用直接内存可以使用参数-XX:MaxDirectMemorySize配置,如果不设置,默认值最大堆空间,即-Xmx。当直接内存使用量达到-XX:MaxDirectMemorySize时,就会触发垃圾回收,如果垃圾回收不能有效释放足够空间,也会引起系统OOM。

直接内存适合申请次数较少,访问比较频繁的场合,如果内存空间本身需要频繁申请,则并不适合使用直接内存。

虚拟机工作模式:
java虚拟机支持Client和Server两种运行模式,通过java -version查看当前运行模式:

这里写图片描述

虚拟机在Server模式和Client模式下的各种参数可能会有很大不同,可以使用-XX:+PrintFlagsFinal查看参数默认值。

这里写图片描述

以上是两种模式下参数的不同值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值