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

JVM(HotSpot):堆空间(Heap)以及常用相关工具介绍

文章目录

  • 一、内存结构图
  • 二、堆的定义
  • 三、堆内存溢出
  • 四、堆内存排查工具

一、内存结构图

在这里插入图片描述

二、堆的定义

1、通过new关键字创建的对象,都会放到堆空间中。
2、它是线程共享的,堆中的对象都要考虑线程安全问题。

那有同学肯定会问,方法内通过`new`创建的对象,它是存放在堆中吗?线程安全吗?
回答:依然存放在堆中,但是,线程安全的。因为,方法内的局部变量不涉及到多线程共享。

3、堆中的内存,依赖GC进行回收释放。

三、堆内存溢出

堆内存参数:-Xmx1m

错误信息
在这里插入图片描述
代码复现

import java.util.ArrayList;public class Demo03 {public static void main(String[] args) {int i = 0 ;ArrayList<String> list = new ArrayList<>();String a = "1111111";try {while (true){list.add(a);a += a;i++;}} catch (Throwable e) {e.printStackTrace();System.out.println(i);}}
}

四、堆内存排查工具

1、jps工具
查看当前服务器中有那些Java进程。

2、jmap工具
输出堆内存日志信息,查看堆内存占用情况

命令:jmap -heap pid
在这里插入图片描述在这里插入图片描述

3、jconsole工具
图形化工具,更强大,可以执行GC回收、监测死锁。
在这里插入图片描述在这里插入图片描述
4、jvisualvm工具
图形化工具,更强大,可以执行GC回收、监测死锁。还可以查看堆Dump
在这里插入图片描述
点击 堆 Dump 按钮
会生成一份dump文件,点击右侧查看按钮
这个查看功能,有点慢!!!!
在这里插入图片描述
以上工具的详细用法,自行百度。
推荐jmap。方便快捷。

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

相关文章:

  • 【Python语言初识(六)】
  • 使用root账号ssh登录虚拟机ubuntu
  • 五子棋双人对战项目(1)——WebSocket介绍
  • rabbitMq------信道管理模块
  • 如何只用 CSS 制作网格?
  • Linux安装RabbitMQ安装
  • SpringBoot驱动的社区医院信息管理平台
  • MyBatis-Plus如何分页查询?
  • 云原生之容器编排实践-OpenEuler23.09离线安装Kubernetes与KubeSphere
  • 构建企业数字化转型的战略基石——TOGAF框架的深度解析
  • docker -私有镜像仓库 - harbor安装
  • 头号积木玩家——软件工程专业职业生涯规划报告
  • Redis(初步认识和安装)
  • 计算机网络:计算机网络概述:网络、互联网与因特网的区别
  • 网络编程套接字TCP
  • Git
  • 【日常记录】现在遇到的Y7000P亮度无法调节问题,无需改动注册表进行调整的方法。
  • ubuntu20.04.6 触摸屏一体机,外接视频流盒子开机输入登录密码触屏失灵问题解决方法
  • 师生健康信息管理:SpringBoot技术指南
  • 手机/平板端 Wallpaper 动态壁纸文件获取及白嫖使用指南
  • 【软件工程】模块化思想概述
  • 解决方案:机器学习中,出现欠拟合和过拟合,这两种情况分别如何解决
  • 腾讯 25 届秋招算法工程师面经
  • MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置
  • 开源黑科技!Fish Speech TTS模型完美支持8种语言
  • 算法知识点————数论和链表
  • NASA:ATLAS/ICESat-2 L3B 每日和每月网格极地海面高度异常 V003
  • Java类设计模式
  • Valhalla实现 使用Docker部署利用OSM(Mapbox)地图实现路径规划详细步骤
  • blender解决缩放到某个距离就不能继续缩放