如何查看JVM内存中的对象和执行中的方法

21 篇文章 1 订阅
订阅专栏

本机debugger就好了,远程的可以远程debugger, 在tomcat的catalina.sh里增加一行CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" 重启一下就可以在eclipse的Remote Java Application里通过ip和上面指定的端口进行远程debugger了。 https://blog.csdn.net/shy_snow/article/details/79043148

内网生产无法远程debugger的怎么办?

使用jmap和jstack将堆内存(对象)和栈(方法)输出为文件然后下载下来进行查看。

pid:是jvm进程号,可以使用jps -ml或ps命令查看到

jvm内存对象统计:jmap -histo:live  pid

jvm内存对象查看:

先将内存导出为文件:   jmap -dump:format=b,file=dump.hprof pid

然后使用mat工具打开查看

里面有多个统计面板,类的占比,对象的引用关系,你可以看到占内存较多的类以及这些类被谁持有,结合方法栈和代码来继续分析。

 


jvm中线程执行中的方法(栈): jstack -l pid 

可以看到方法调用,方法的行号,就知道线程在执行什么方法。这个只能看到java的堆栈,一些本地堆栈看不到可以使用linux的pstack pid命令来继续深入查看。

你还想看到方法的耗时和返回值?

那你要用arthas工具的trace和watch命令;

trace 方法内部调用路径,并输出方法路径上的每个节点上耗时

解压arthas-bin.zip后执行java -jar arthas-boot.jar或者as.sh进入arthas命令行界面

然后输入要查看的类和方法名,格式为 :

trace 类名   方法名

https://arthas.aliyun.com/doc/trace.html

https://blog.csdn.net/shy_snow/article/details/108338604

垃圾回收器与JVM性能监控工具介绍以及java多线程安全性介绍ppt

java查看jvm对象个数_jmap-查看 jvm 内存对象信息
weixin_30000407的博客
02-27 5629
jmap 概述命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件,也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。参数option:选项参数。pid:需要打印配置信息的进程ID。executable:产生核心dump的Java可执行文件。core:需要打印配置信息的核心文件。server-id 可选的唯一id,如果相同...
获取运行JVM系统属性
02-23
安装在不同操作系统的Java虚拟机负责着Java程序与操作系统之间的工作,因此每个Java虚拟机的系统环境属性是不同的,我们可以通过访问Java虚拟机的系统属性来获知一些关于当前操作系统的一些基本信息,这些信息的价值有时是非常重要的。
JVM工作原理及内存管理机制
06-21
执行方法JVM提供了invokestatic、invokevirtual、invokeinterface和invokespecial四种指令来执行 (1)invokestatic:调用类的static方法 (2)invokevirtual:调用对象实例的方法 (3)invokeinterface:将属性定义为接口来进行调用 (4)invokespecial:JVM对于初始化对象(Java构造器的方法为:<init>)以及调用对象实例的私有方法时。
JVMJVM堆占用情况分析(频繁创建的对象内存泄露等问题)、jmap+jhat、jvisualvm工具使用
最新发布
hiliang521的博客
04-12 1046
JVMJVM堆占用情况分析(频繁创建的对象内存泄露等问题)、jmap+jhat、jvisualvm工具使用
JVM自动内存管理机制
02-25
Java自动内存管理机制包含两部分:内存分配和内存回收,要想理解内存分配和回收的机制,则需要了解下Java内存区域(Java运行时数据区),这篇随笔将按照下面的线索进行逐步解析:1.Java运行时数据区2.对象“已死”的判定算法3.垃圾收集算法4.垃圾收集器5.结束语好,接下来我们一一来看。根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存将会包括如下几个运行时数据区域程序计数器:用来记录当前线程所执行的字节码指令的行号指示器。字节码计时器需要通过改变改值来选取下一条需要执行的字节码指定,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个指示器来完成。程序计数器是唯一一个没
详细讲解了jvm在java应用
09-19
主要包含:JVM概述,内存结构讲解,对象实例化,垃圾回收,类的加载,程序编译,代码的优化,性能监控与调优. JVM:全称 Java Virtual Machine,一个虚拟计算机,Java 程序的运行环境(Java二进制字节码的运行环境) 特点:Java 虚拟机基于二进制字节码执行,由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆、一个方法区等组成;JVM 屏蔽了与操作系统平台相关的信息,从而能够让 Java 程序只需要生成能够在 JVM 上运行的字节码文件,通过该机制实现的跨平台性。即一次编译,处处执行;自动的内存管理,垃圾回收机制.
JVM 知识点整理:对象的创建过程
12-21
JVM 知识点整理:对象的创建过程类加载分配内存分配方式一:指针碰撞分配方式二:空闲列表如何选择?线程安全问题CAS + 失败重试方法线程本地分配缓存区(TLAB)后续工作 类加载 虚拟机遇到一条 new 指令时,首先检查,指令的参数是否能在常量池种定位到一个类的符号引用,并且检查这个符号引用的类是否已经被加载、解析、初始化过,如果没有那必须执行相应的类加载过程。 比如:String str = null; 这就意味着类已经被加载,创建对象时这步类加载就不要执行了 分配内存 在类的加载检查通过后,接下来虚拟机将为新生对象分配内存对象所需内存大小在类加载完成后便可以完全确定。为对象分配空间的任
JVM对象排查
qq_36807862的博客
09-12 3180
在Linux环境下查看占用内存较多的java对象 使用top查看到排名靠前的java进程 查看占用内存较多的前30名java对象 jmap -histo:live 【pid】 | head -30,也可以导出到文件: jmap -dump:format=b,file=/filepath/heap.bin pid 备注:如果当前用户不是启动java进程的用户,使用j...
JVM内存-对象
Yolk_Juice的博客
06-27 129
内存:首先在Java屏蔽了指针且程序员无法直接使用堆内存, 在堆内存的变量是对象级的变量,即对象变量/实例变量,对象变量/实例变量 存储在 对象/实例 ,那么对象就是在堆内存开辟的空间,使用 new运算符 + 引用数据类型 可以在堆内存开辟空间,创建对象。栈内存:栈内存存储main方法和局部变量,栈内存的变量存储字面量或内存地址,为了使用对象,将对象在堆内存内存地址存储在一个变量,通过这个变量来访问堆内存对象,这种变量被称为引用变量。紫色的变量为引用变量。
jvm内存和线程信息查看
m0_54850825的博客
04-04 4015
目录 1、通过jmap查看整体信息:jmap -heap 2、通过jstat查看gc的信息:jstat -gcutil :统计gc信息 3、通过jmap 对jvm信息进行dump,在MAP工具查看 4、利用jstack查看jvm线程的情况 1、通过jmap查看整体信息:jmap -heap [root@localhost ~]# jmap -heap 27900 Attaching to process ID 27900, please wait… Debugger attached successf
java高分局之寻找JVM对象
m0_67392409的博客
09-07 588
实例数据:保存对象实例的数据,我们看到其age是27,name是一个指针指向了“chujinhui”这个常量。我们现在就看到了User对象内存的样子,我们可以分作两部分,第一部分我们叫对象头,第二部分叫实例数据。我们在第5行,也就是输出那行加入了断点,让代码停止在第5行,以便于我们从内存寻找创建的User对象。刚打开时显示此进程的线程信息,我们选主线程,也就是最后一个,双击就会打开Inspector窗口。果真,我们在年轻代,找到了我们的User对象,并且此对象的地址是:0x102de618,
java强引用、软引用、弱引用、虚引用
weixin_30378311的博客
08-27 126
前言概述 在JDK1.2以前的版本,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。这就像在日常生活,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再把它捡回来使用就不可能了。 但有时候情况并不这么简单,你可能会遇到类似鸡肋一样的物品,食之无味,弃之可惜。这种物品现在已经无用了,保留它会占空间,但是立刻...
JVM】六、JDK工具查看JVM参数、内存使用情况及分析等)
qwertyuiopasdfghjklzxcvbnm
08-11 611
  在JDK的bin目录下有很多命令行工具:                我们可以看到各个工具的体积基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一层薄包装而已,他们的主要功能...
jvm 对象的访问定位,即引用是怎么定位到内存对象
祁东握力的博客
10-22 485
对象的访问定位有两种方式: 第一种,引用使用句柄访问对象: 概念:引用存储的是一个地址,该地址是句柄的地址,而句柄是一种结构,分别存储 实例指针和类型指针 这两种指针,(实例指针是指向堆对象实例,而类型指针指向的是在方法对象所属类型)。当要访问对象时,先通过引用访问句柄,再通过句柄访问对象实例以及对象类型信息。句柄是存储在堆的,如果使用这种方式,那么就会从堆分出一块内存用作句柄池...
探索jvm对象
Arthur19931016的博客
09-25 219
本文结合常用jvm-Hotspot和常用的内存区域Java堆,来探讨一下普通Java对象创建过程,在堆的分配布局和访问过程。
jvm 运行时数据区/对象
kobexzf的博客
12-19 198
jvm栈(局部变量表编译期大小确定,stackoverflow:栈深度太大超-Xss,oom:申请不到内存,比如线程太多了) native方法栈(sof和oom) pc(当前字节码指令行号,native方法为空,无oom) 堆(对象,数组,新生代(Eden,from/to survivior)老年代,-Xms初始 -Xmx最大) 方法区(code cache(jit),静态变量,类信息,常量,oo............
获取jvm运行时相关数据
weixin_39079222的博客
06-13 482
jvm运行时获取相关信息, 主要涉及到这2个类: RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); 获取pid: String xPid = runtimeMXBean
java获取运行时对象,java 面向对象(四十一):反射(五)反射应用二:获取运行时类的完整结构...
weixin_29326909的博客
03-22 202
我们可以通过反射,获取对应的运行时类所有的属性、方法、构造器、父类、接口、父类的泛型、包、注解、异常等。。。。典型代码: @Testpublic void test1(){Class clazz = Person.class;//获取属性结构//getFields():获取当前运行时类及其父类声明为public访问权限的属性Field[] fields = clazz.getFields();...
JVM(一)Java运行时区域、对象的使用
HK的博客
11-23 1457
程序计数器、堆、栈、方法区、本地内存对象的创建过程、对象内存布局、对象的访问定位;内存泄露、内存溢出;OOM分类
jvm内存区域对象存储
12-01
JVM内存区域分为程序计数器、本地方法栈、虚拟机栈、堆、方法区。其,堆是存储对象实例的主要区域,而方法区则是存储类信息、常量、静态变量等数据的区域。具体来说,对象实例在堆分配内存,而类信息、常量、静态变量等数据则存储在方法。除此之外,程序计数器用于记录当前线程执行的字节码指令地址,本地方法栈用于存储本地方法的参数和返回值,虚拟机栈用于存储方法调用的现场信息。 以下是一个简单的Java程序,演示了对象在堆的存储过程: ```java public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public void sayHello() { System.out.println("Hello, my name is " + name + ", I'm " + age + " years old."); } public static void main(String[] args) { Person p = new Person("Tom", 18); p.sayHello(); } } ``` 在上述程序,我们定义了一个Person类,其包含了name和age两个属性,以及一个sayHello方法。在main方法,我们创建了一个Person对象p,并调用了它的sayHello方法。 当程序执行到创建Person对象的语句时,JVM会在堆为该对象分配内存,并将对象引用赋值给变量p。在堆分配内存的过程JVM会根据对象的大小和堆的剩余空间来确定对象的存储位置。在本例,Person对象的大小为16字节(name和age各占4字节),因此JVM会在堆找到一块足够大的空间来存储该对象。在对象存储完成后,JVM会将对象引用赋值给变量p,以便后续的访问。 在调用p.sayHello()方法时,JVM会根据对象引用p找到该对象在堆的存储位置,并调用该对象的sayHello方法。在方法执行完成后,JVM会将现场信息出栈,继续执行main方法的其他语句。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Eclipse和debug的一些快捷键:F8一直执行到下一个断点。 99034
  • 修改Tomcat端口号 78796
  • java.library.path在哪? 56698
  • linux的cache过高的原因定位与解决echo 3 > /proc/sys/vm/drop_caches 32390
  • &lt;a href=&quot;javascript:history.back();&quot;&gt;返回上一页&lt;/a&gt; 23948

分类专栏

  • 代码示例 22篇
  • 服务器 27篇
  • 大模型 4篇
  • 安装部署 42篇
  • hugegraph
  • SQL血缘解析 2篇
  • Doris 2篇
  • Spark 2篇
  • 网络 9篇
  • Hadoop大数据入门 6篇
  • 安全 10篇
  • pulsar 2篇
  • Flink 6篇
  • JVM 21篇
  • docker 1篇
  • hudi 1篇
  • 机器学习 1篇
  • 树莓派 7篇
  • 数据结构和算法 1篇
  • quartz 4篇
  • 线程安全 10篇
  • 性能定位 27篇
  • linux 55篇
  • 开源软件kettle 11篇
  • 大数据 33篇
  • Redis 8篇
  • 自学推荐 12篇
  • 设计原则 3篇
  • 数据库 68篇
  • 软件工程 17篇

最新评论

  • java.lang.OutOfMemoryError内存溢出定位

    敲键盘的小夜猫: 我对您如何将复杂概念简化,并用易于理解的方式传达出来印象深刻。这种内容不仅能够帮助初学者快速掌握要领,也为有经验的开发者提供了新的见解和思路。感谢您的辛勤工作和慷慨分享,期待您未来的作品!继续加油! 【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 树莓派设置固定ip

    傅铭记: 也是方法一,手机显示热点连起了,可是VNC用不了,只设置了第一个IPV4,怎么办

  • 树莓派设置固定ip

    傅铭记: 我也连不上了,急

  • zookeeper3.6.3升级jetty9.4.47解决安全漏洞CVE-2022-2048和CVE-2021-28169

    鹅搬凳_: 哥,我想问一下重启了zookeeper还需要重启kafka吗

  • Flink CDC同步 MySQL 分库分表分片数据

    Qin_J:): 大佬,请教一个flink mysql cdc的问题,flink任务启动一段时间之后,就会报一个错:table outbound.extract transaction 28240219 whose schema isn't known to this connector. One possible cause is an incomplete database history topic, Take a new snapshot in this case.导致同步不到数据,这个是什么原因呢?

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 使用7zip解决linux大文件解压报错invalid zip file with overlapped components (possible zip bomb)
  • shell监控目录下新增的文件并进行处理
  • 使用curl发送时间参数
2024年5篇
2023年44篇
2022年97篇
2021年51篇
2020年44篇
2019年23篇
2018年22篇
2017年30篇
2016年2篇
2013年2篇
2012年2篇
2011年10篇
2010年101篇
2009年3篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司广安百姓网标王价格定西seo网站推广推荐重庆网络推广报价淮南网站搜索优化阿坝网站制作设计价格果洛网站关键词优化推荐大庆网站推广公司抚州企业网站设计报价洛阳建站推荐韶关网站搜索优化哪家好茂名推广网站哪家好霍邱外贸网站设计哪家好滁州网络营销多少钱秦皇岛网站制作公司松岗网络推广公司甘孜网络推广推荐新乡模板制作推荐威海网站改版推荐张掖网站优化按天计费公司忻州优秀网站设计公司迁安网站开发报价青岛网站优化排名多少钱大庆模板推广哪家好宜昌网站排名优化公司宁波seo排名公司玉溪建站报价包头网页设计价格荷坳建网站价格烟台优化推荐南平阿里店铺运营公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化