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

堆内存和一些检测工具

17 堆定义

通过new关键字创建,创建对象都会使用堆内存。
是线程共享的,需要考虑线程安全问题。
有垃圾回收机制。

18 堆-内存溢出

当默认情况下,发现执行到26,出现内存溢出。
当我们将堆内存调为8m,继续执行,如图2.发现支循环了17次。-Xmx=8m;下面的demo展示一下为何内存溢出;
因为list的生命周期是在try块里,每次新建对象,而且不被回收。
代码如下。
public class Demo1_5 {public static void main(String[] args) {int i=0;try{List<String> list=new ArrayList<>();String a="hello";while (true){list.add(a);a=a+a;i++;}}catch (Throwable e){e.printStackTrace();System.out.println(i);}}
}

在这里插入图片描述

19 堆-内存诊断jmap

jps 查看有哪些java进程
jmap 查看堆内存占用情况jmap -heap 进程id  查看堆内存占用情况。
也可以发现,新创建的对象会放在eden区。
Heap Usage

测试代码

public class Demo1_4 {public static void main(String[] args) throws Exception{System.out.println("1.....");Thread.sleep(30000);byte[] array=new byte[1024*10*1024];System.out.println("2....");Thread.sleep(20000);array=null;System.gc();System.out.println("3....");Thread.sleep(100000L);}
}

创建数组对象前(hh,我手速太慢了)。。。

在这里插入图片描述

20 jconsole

在这里插入图片描述

http://www.lryc.cn/news/110213.html

相关文章:

  • 【JavaScript】元素获取指南
  • uniapp 返回上一页并刷新
  • Java阶段五Day21
  • 2023,谁在引领实时互动进入高清时代?
  • STM32(HAL)串口中断接收
  • word转pdf怎么转?几种常用方法分享
  • 自学(黑客)技术,入门到入狱!
  • js 函数、闭包及函数对象
  • SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--搭建Vue 前端工程[二]
  • Android 之 AudioManager ( 音频管理器 )
  • 2023爱分析·超自动化厂商全景报告|爱分析报告
  • 【C++进阶知识】04 - 函数默认实参、默认初始化、initializer_list
  • C语言笔试训练【第三天】
  • Android SystemServer中Service的创建和启动方式(基于Android13)
  • Meta开源AI音频和音乐生成模型
  • rust怎么解析json数据?
  • STM32 NOR_FLASH 学习
  • 【数据结构|二叉树遍历】递归与非递归实现前序遍历、中序遍历、后序遍历
  • iPhone 8 Plus透明屏有哪些场景化应用?
  • 解决 MySQL 删除数据后,ID 自增不连续问题
  • arcgis--网络分析(理论篇)
  • Linux笔记1(系统状态等)
  • Set-up ESP-AT Environment on Windows using CMD
  • SpringBoot中Redis报错:NOAUTH Authentication required
  • 需求飙升120%!芭比产品火爆出圈,意大利人争相购买!
  • echarts-pie---------3D曲状环形饼图实现!!!
  • 合并两个有序链表(leetcode)
  • CAS之AtomicReference原理解析
  • JS/JQ实现字符串加密成 HEX(十六进制) 字符串
  • 骨传导耳机怎么样?盘点五款适合室外佩戴的骨传导耳机