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

网站建设外链实时积分榜

网站建设外链,实时积分榜,ui软件,凡客包包堆 笔记记录 1. 定义2. 特点3. 堆内存溢出3.1 堆空间调整参数 4. 堆内存诊断及相关工具使用4.1 jps工具4.2 jmap工具4.3 jconsole工具4.4 案例分析14.5 案例分析2,垃圾回收后,内存占用仍然很高 3. 拓展问题3.1 来自于学习弹幕的一个问题, 方法…

堆 笔记记录

  • 1. 定义
  • 2. 特点
  • 3. 堆内存溢出
    • 3.1 堆空间调整参数
  • 4. 堆内存诊断及相关工具使用
    • 4.1 jps工具
    • 4.2 jmap工具
    • 4.3 jconsole工具
    • 4.4 案例分析1
    • 4.5 案例分析2,垃圾回收后,内存占用仍然很高
  • 3. 拓展问题
    • 3.1 来自于学习弹幕的一个问题, 方法中的使用new关键字创建的局部对象,没有外界使用,那它在堆内存还是方法栈帧中?

学习资料来源-b站黑马JVM& 尚硅谷JVM精讲与GC调优

1. 定义

这里是引用

  • 是 JVM 中最大的一块内存区域,被所有线程共享,在虚拟机启动时创建,用于存放对象实例。从内存回收角度,堆被划分为新生代和老年代,新生代又分为 Eden 区和两个 Survivor 区(From Survivor 和 To Survivor)。如果在堆中没有内存完成实例分配,并且堆也无法扩展时会抛出 OutOfMemoryError 异常 小林面试网站关于堆的介绍
  • 通过ne关键字,创建对象都会使用堆内存

2. 特点

  • 线程共享,堆中对象都需要考虑线程安全问题
  • 有垃圾回收机制

3. 堆内存溢出

当一个对象被回收的条件是没有其他在使用它,就会被回收。但是如果不断地产生对象,且都在被使用,这样一直不断产生且一直使用达到一定地数量,就会有可能造成堆内存耗尽。也就是堆内存溢出问题。、
下面代码能造成堆内存溢出。

在这里插入图片描述

    public static void main(String[] args) {int count=0;try {List<String> list=new ArrayList<>();String a="hello";while (true){list.add(a);a=a+a;count++;}} catch (Throwable e) {e.printStackTrace();System.out.println(count);} finally {}}

这里要注意一点,可能默认分配地堆内存空间就很大,所以并不会很快地产生溢出,因此我们可以配合其他地堆内存大小调增参数进行动态调整,这样可以快速地达到一个复现oom的效果。

3.1 堆空间调整参数

-Xmx4g

4. 堆内存诊断及相关工具使用

4.1 jps工具

查看当前系统中有哪些Java进程。并且会输出对应的Java进程id。得到Java进程id后,我们就可以使用下面的jmap工具来查看,对应进程的堆内存使用情况。

4.2 jmap工具

查看堆内存占用情况(只能查询某一时刻的堆内存占用情况。)如果想看连续的堆内存的使用情况的话,就得使用jconsole工具类查看。这个是图形的界面会动态展示堆内存使用情况。

4.3 jconsole工具

图形界面,多功能的监测工具,可以连续监测。还可以监测是否有死锁,监测线程,CPU等等。

4.4 案例分析1

System.out.println("1...");TimeUnit.SECONDS.sleep(30);byte [] bytes = new byte[1024 * 1024 * 10];System.out.println("2...");TimeUnit.SECONDS.sleep(30);bytes=  null;System.gc();System.out.println("3...");TimeUnit.SECONDS.sleep(3000);

这里是引用
控制台输入:jconsole 也可以看到上面的效果
在这里插入图片描述
在这里插入图片描述

4.5 案例分析2,垃圾回收后,内存占用仍然很高

  1. GC回收前的状态
    在这里插入图片描述
  2. 进行GC
    在这里插入图片描述
  3. 执行GC后
    在这里插入图片描述
    我们再借用一个工具 jvisualvm来看看具体情况
    在这里插入图片描述
    点击堆dump,截取一个堆的快照看看什么情况
    在这里插入图片描述
    查找占用最大的对象,比如这里的ArrayList
    在这里插入图片描述
    看具体信息在这里插入图片描述
    再去看对应的源代码,list放入了200个对象,且一直无法被回收。list中1个对象差不多占用1mb。跟我们的情况差不多。也就是为什么上面回收不完全问题。
    在这里插入图片描述

3. 拓展问题

3.1 来自于学习弹幕的一个问题, 方法中的使用new关键字创建的局部对象,没有外界使用,那它在堆内存还是方法栈帧中?

  1. 对象本身:new创建的对象始终在堆内存中。
  2. 对象的引用:如果是局部变量(如方法内定义的引用),则引用存储在栈帧中。
  3. 如果没有外界引用(即该对象仅在方法内部使用),它仍然在堆中,但方法执行完成后,引用会从栈中弹出,对象会成为垃圾回收的候选对象(如果没有其他引用指向它)。
  4. 特殊情况优化:
    逃逸分析(Escape Analysis):JVM在某些情况下(如对象未逃逸出方法作用域)会通过优化将对象分配在栈上(即栈上分配),甚至直接拆解为标量(标量替换)。但这是JVM的优化行为,默认情况下对象仍在堆中

文章转载自:

http://jy2nuNXo.wfyqn.cn
http://q8Ok84Cc.wfyqn.cn
http://3nwOOS2x.wfyqn.cn
http://0Xyqprbp.wfyqn.cn
http://0nCKIhdY.wfyqn.cn
http://uFPsLQAM.wfyqn.cn
http://v2v9iQ0S.wfyqn.cn
http://j1wCCzwk.wfyqn.cn
http://cgg8ajMJ.wfyqn.cn
http://thYyUBkE.wfyqn.cn
http://QgQvSOzx.wfyqn.cn
http://HVWemGga.wfyqn.cn
http://E9N8gZJe.wfyqn.cn
http://RlHe5ZcK.wfyqn.cn
http://8cxYAPAs.wfyqn.cn
http://vXnzzz2p.wfyqn.cn
http://NcDT3SLB.wfyqn.cn
http://MjESQh2I.wfyqn.cn
http://E7ycbVVc.wfyqn.cn
http://yddBPfhp.wfyqn.cn
http://SZ8qmvD1.wfyqn.cn
http://HwJx1Gni.wfyqn.cn
http://2AHH1UcC.wfyqn.cn
http://T8ooD6XL.wfyqn.cn
http://kGvRVd2w.wfyqn.cn
http://utMn6W56.wfyqn.cn
http://XKCSHGx0.wfyqn.cn
http://RuuKTkqO.wfyqn.cn
http://8d1H6zYo.wfyqn.cn
http://ChJTO8jx.wfyqn.cn
http://www.dtcms.com/wzjs/626286.html

相关文章:

  • 北京各大网站推广平台哪家好沛县网站建设xlec
  • 做视频网站服务器怎么选择抵押网站建设方案
  • 一般建设网站的常见问题装修设计用什么软件好用
  • 网站租用空间中国建筑八个局排名
  • 如何做网站外链百度收录权重
  • e4a怎么做网站app网站开发html书籍下载
  • 伍佰亿门户网站建设网站的安全性介绍
  • 友情手机站江西南昌网站建设哪家好
  • 网站配色方法广州番禺区好玩的景点
  • 中小企业网站制作费用是多少?郴州网约车平台有哪些
  • 酒店网站开发需求文档wordpress微博登入获取头像
  • asp网站开发需要什么网站目录怎么做301重定向
  • 学做点心的网站php网站开发流程逻辑
  • 做h5的网站有哪些东莞网页制作公司
  • 珠海建网站的联系方式广元做网站站排名
  • 做logo的网站高防手表网站
  • 企业怎么建设网站长春做网络优化的公司
  • 设计网站公司可去亿企邦高端制造
  • 制作网站项目流程国家建设部网站官网
  • 能查个人信息的网站wordpress4.7企业主题
  • 网站软文营销临沂seo顾问
  • 网站特效模板江苏省住房和建设厅网站
  • 专做海报设计的网站沧州网站建设公司排名
  • 如何搭建视频网站做一个网站需要多大的空间
  • vs2013做登录网站wordpress 模板 导航栏
  • 保定微网站 建设aspcms手机网站
  • 做网站如何适配手机网站毕设怎么做
  • 网站设计内容朋友要我帮忙做网站
  • 自己做的网站可以卖红酒网站建设方案
  • 佛山专业网站建设公司推荐wordpress主题多语言