当前位置: 首页 > article >正文

什么是堆内存?参数如何设置?

文章目录

    • 什么是堆内存?参数如何设置?
  • 栈和队列,举个使用场景例子?

什么是堆内存?参数如何设置?

堆内存是指由程序代码自由分配的内存,与栈内存作区分。
在 Java 中,堆内存主要用于分配对象的存储空间,只要拿到对象引用,所有线程都可以访问堆内存。

  • -Xmx, 指定最大堆内存。 如 -Xmx4g. 这只是限制了 Heap 部分的最大值为 4g。这个内存不包括栈内存,也不包括堆外使用的内存。
  • -Xms, 指定堆内存空间的初始大小。 如 -Xms4g。 而且指定的内存大小,并不是操作系统实际分配的初始值,而是 GC 先规划好,用到才分配。 专用服务器上需要保持 –Xms 和 –Xmx 一致,否则应用刚启动可能就有好几个 FullGC。当两者配置不一致时,堆内存扩容可能会导致性能抖动。
  • -Xmn, 等价于 -XX:NewSize,使用 G1 垃圾收集器 不应该 设置该选项,在其他的某些业务场景下可以设置。官方建议设置为 -Xmx 的 1/2 ~ 1/4.
  • -XX:MaxPermSize=size, 这是 JDK1.7 之前使用的。Java8 默认允许的 Meta 空间无限大,此参数无效。
  • -XX:MaxMetaspaceSize=size, Java8 默认不限制 Meta 空间, 一般不允许设置该选项。
  • -XX:MaxDirectMemorySize=size,系统可以使用的最大堆外内存,这个参数跟 -
    Dsun.nio.MaxDirectMemorySize 效果相同。
    -Xss, 设置每个线程栈的字节数。 例如 -Xss1m 指定线程栈为 1MB,与-
    XX:ThreadStackSize=1m 等价

栈和队列,举个使用场景例子?

  • 栈(后进先出)可以用于字符匹配,数据反转等场景
  • 队列(先进先出)可以用于任务队列,共享打印机等场景

http://www.kler.cn/news/160977.html

相关文章:

  • 【LeetCode】2621. 睡眠函数
  • ETLCloud详解,如何实现最佳实践及问题排查
  • 代码随想录算法训练营第五十八天 | 793.每日温度,496.下一个更大元素 I
  • LabVIEW开发自适应降噪ANC
  • vue的propsData
  • 04 ECharts基础入门
  • MySQL和MongoDB简介以及它们之间的区别
  • ThinkPHP6使用Validate验证表单字段唯一
  • 【每日一题】重新规划路线
  • 【C++初阶】六、类和对象(初始化列表、static成员、友元、内部类)
  • 脉冲压缩及MATLAB仿真
  • 数组常用方法
  • 剧本杀小程序搭建:打造线上剧本杀新体验
  • HTML 块级元素与行内元素有哪些以及注意、总结
  • EasyExcel如何读取全部Sheet页数据方法
  • leetcode刷题:611.有效三角形的个数(双指针实现)
  • C++中单引号‘‘和双引号““的区别
  • Linux内核上游提交完整流程及示例
  • 多人聊天室
  • Python实现广义线性回归模型(statsmodels GLM算法)项目实战
  • Oracle 查询语句限制只选择最前面几行,和最后面几行的实现方式。
  • GAN:WGAN前作
  • 【玩转TableAgent 数据智能分析】-- 数据分析不再是专业人士的专利
  • 如何使用Net2FTP轻松部署本地Web文件管理器并远程访问管理内网资源?
  • [⑦ADRV902x]: JESD204学习笔记
  • 【Spark基础】-- 宽窄依赖
  • 【学习笔记】插值之拉格朗日插值(Lagrange)
  • springboot中@Builder注解的详细用法实例,跟数据库结合。
  • Leetcode226. 翻转二叉树
  • Python语言基础知识(一)