通过dump分析Java对象在内存中到底占用多大空间?

JVM内存Dump原理与在线分析实战 | 得物技术 当前我们微服务容器化部署JVM 实例很多,常常需要进行JVM heap dump analysis,为了提升JVM 问题排查效率,得物技术保障团队研究了JVM内存Dump 原理与设计开发了JVM 内存在线分析。 常见的JVM heap dump analysis 工具如: MAT,JProfile,最常用的功能是大对象分析。功能上本地分析工具更全面,在微服务架构下,成千上万的实例当需要一次分析的时候,于是我们思考如何提供更方便更快的在线分析方便研发人员快速排障。... 阅读详情
一、内存结构分析
1、概念:
Shallow Size:Shallow size就是对象本身占用内存的大小,不包含其引用的对象。
retained size: 自身对象+引用对象的retained大小。
2、jvm内存创建对象组成部分
1)对象头包括两部分:
第一部分markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等
第二部分类型指针,虚拟机通过这个指针来确定这个对象是哪个类的实例
2)实例数据
实例数据部分是对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容。无论是从父类继承下来的,还是在子类中定义的,都需要记录起来。
3)填充数据
最后一块对齐填充空间并不是必然存在的,也没有特别的含义,它仅仅起着占位符的作用。这是由于HotSpot VM的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说,就是对象的大小必须是8字节的整数倍。
3、对象头占用空间
1. 在32位系统下,存放Class引用指针的空间大小是4字节,MarkWord是4字节,对象头为8字节。
2. 在64位系统下,存放Class引用指针的空间大小是8字节,MarkWord是8字节,对象头为16字节。
3. 在64位开启指针压缩的情况下 -XX:+UseCompressedOops,存放Class引用的空间大小是4字节,MarkWord是8字节,对象头为12字节。
4. 如果对象是数组,需要另外增加4字节,用来记录数组长度,也就是一个int类型的对象,占4字节
二、确认机器环境情况:
查看机器位数
java -d64 -version

 

查看是否开启压缩
jinfo -flag UseCompressedOops 462238
目前机器JVM内存情况
 
三、对象占用内存分析及优化实战
1、dump内存文件是使用JProfiler分析
2、内存具体情况分析
1)int[]数组占用内存空间分析:
 对象头12byte+2*4数据+ 4(记录数组长度) = 24byte
 
2)字符串分析:
单纯一个String: 的shallowSize 24byte= 对象头(8+4)byte+4byte(字段属性hash)+8byte(long序列号号) 
单纯一个char[] 内存大小shallowSize  16 btype = 对象头(8+4)byte+4byte(数组长度)
一个String最小占用内存:40Byte
一个String占用内存大小Retained = (shallowSize 24byte) +( char[] 的shallowSize  16 btype) +一个char 2byte*N个字符 = 40 +2N + (40 +2N)/8,然后补齐到8的倍数(40 +2N)/8。其中N是字符个数
如规则adowner = 40+2*10 + (40+2*10)/8 = 64
 
 
3)Long占用内存分析
Long 24  = 12Byte(对象头)+8btype + 4byte(对齐补充) 
 
3、优化点
1)时间字符串优化成 int,占用内存效果:64byte->4byte  降低原来 1/16
2)hashMap的key由String 优化成Long,内存占用优化效果:72byte->24byte  降低原来 1/3
通过dump文件,分析outOfMemoryError的排查过程和排查思路 前段时间发现有一个内存溢出导致java线上服务OOM的问题,通过jvm启动配置增加-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/app/oom的命令,在出现了第二次服务挂掉的时候,拿到了当时的dump文件,以下是我通过dump文件对异常进行梳理的过程。 首先,把服务器的dump文件拉到我本地后,使用jdk自带的jvisualvm装载dump文件 在载入后,我得到了各个类的内存占用情况分析图。如下: 在这个分析图表中,我发 阅读详情

相关推荐

分析通过jmap等命令获取的JVM heap dump文件中,Class name列 [Z [B [C [L [D [F [I [J [S字符的含义

heap dump文件解析 [Z [B [C [L [D [F [I [J [S等字符的含义 Class.getName()方法的返回内容 基本类型如何获取到Class类型信息

HO1_K的博客 5431

<JVM实战> 通过分析Heap Dump 来了解 Memory Leak ,Retained Heap,Shallow Heap

<JVM实战> 通过分析Heap Dump 来了解 Memory Leak ,Retained Heap,Shallow Heap

Jaemon 2200

IBM heapAnalyzer分析dump文件

项目在生产环境中内存溢出时多数会生成dump 文件 IBM开发的强大的内存dump分析工具,IBM heapAnalyzer是通过分析OOM后的Java heap dump文件的,通过对dump文件的分析找到可能!!!泄露的点。(注意:这是说的是可能,真正的内存溢出,我们还需要结合程序来进行一个分析) 官网下载地址 IBM HeapAnalyzerhttps://www.ibm.com/support/pages/ibm-heapanalyzer 下载之后只有得到这样的文件 ..

学英语的程序员 5487

java内存溢出定位

*一个对象的shallow heap的大小指的是该对象在没有引用其他对象的情况下本身占用的内存大小。**一个普通对象的shallow heap 的大小(不包括数组类型)依赖于它含的方法,元素的大小。例如:我最近在写一个自动生成word文档的功能,然后发生了内存溢出,下载dump文件后进行分析,发现最大的占了近40%的内存,然后点details进行具体分析。类型的shallow heap的大小则指的是集合所包含的所有对象的大小的总和。查看shallow heap最大的行。右键List object。

qq_39022699的博客 547

K-GAS解读(08)

大众kgas标准,大众及其供应商kgas

m0_51113317的博客 598

SCCM实战指南:从零搭建企业级Windows自动化部署平台

本文提供了一份详细的SCCM实战指南,手把手教你从零搭建企业级Windows自动化部署平台。内容涵盖环境规划、AD架构扩展、SQL Server配置、SCCM主站点安装,以及最终实现操作系统镜像的自动化部署,旨在帮助IT管理员彻底告别手动装机,实现高效、规范的Windows设备批量管理。

weixin_29251337的博客 638

java 内存的数据全部 dump 出来

内存Dump文件(通常为.hprof格式)是JVM运行时内存的完整快照,包含了堆中的所有对象、类的加载信息、线程堆栈等数据。通过分析这些数据,可以深入了解应用的内存使用情况、对象引用关系等,找出可能存在的内存泄漏或性能瓶颈。jmap是JDK自带的一个命令行工具,用于生成heap dump、查看heap详细信息以及内存使用情况。jmap可以针对正在运行的JVM实例,生成当前内存的快照。jcmd是JDK 7之后提供的一个强大的命令行工具,功能比jmap更加丰富。jcmd。

Flying_Fish_roe的博客 3146

从问卷到结论:手把手教你用SPSS 28完成一份完整的社科数据分析报告

本文详细介绍了如何使用SPSS 28完成社会科学研究中的数据分析报告,从问卷数据导入、清洗到描述性和推断性统计分析,再到结果呈现与报告撰写。通过实际案例演示,帮助研究者掌握SPSS 28的核心功能,提升数据分析效率与报告质量。

weixin_28717431的博客 248

java生成dump文件_dump文件生成和分析查看

java生成dump文件_dump文件生成和分析查看

豪华龙对的博客 1万+

Android图形系统(三)系统篇:渲染/合成的底层原理浅析

众所周知,渲染工作是由GPU负责,那么在聊GPU之前首先得知道什么是“渲染”?我们来举个例子感受一下在系统中申请一块10*101、把图层背景这玩意染成绿的2、从左上(0,0)到右下(10,10)画一条宽度为1颜色为红色的直线3、以坐标点(5,5)为中心,画一个半径为3的实心圆,颜色要蓝色好了,接下来操作系统会把这些“绘图指令”同步给GPU去执行渲染任务图片来源:自己画的GPU完成渲染工作后,我们将会得到一个大小为10*10二维数组,数组中的每个元素都保存着坐标点的颜色信息、深度信息。

1354

告别NEDC!手把手教你将CLTC/WLTP等最新工况文件导入AVL Cruise(附资源包)

本文详细指导如何将CLTC、WLTP等最新工况文件导入AVL Cruise软件,替代传统的NEDC工况。从资源获取、文件预处理到分步导入指南,再到常见问题排查,帮助工程师高效完成汽车仿真性能评估。附赠全球主流工况文件资源包,助力精准仿真分析。

weixin_30374009的博客 461

java 排查占用空间大的对象

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJava 排查占用空间大的对象 在Java开发中,时常会遇到内存使用过高的问题。为了优化内存使用,我们需要了解哪些对象占用了大量的内存。这篇文章将带你通过几个步骤来排查内存中占用空间大的对...

weixin_35853083的博客 438

【低空经济】低空无人驾驶航空器运行管理系统设计方案

低空无人驾驶航空器运行管理系统(以下简称“系统”)旨在为低空域内的无人驾驶航空器(UAV)提供高效、安全、智能的运行管理服务。系统通过集成先进的通信、导航、监控、数据处理和人工智能技术,实现对低空域内无人驾驶航空器的实时监控、动态调度、风险评估和应急响应,确保其在复杂空域环境中的安全运行。系统的核心功能包括空域管理、飞行计划审批、实时监控、冲突预警、应急管理和数据分析。空域管理模块负责划分和管理低空域资源,确保不同飞行任务之间的空域隔离和高效利用。

2502_92579126的博客 1140

Dump文件生成,内容,以及分析

本文用到的工具只是简单介绍,让你有个感官认识,重点是核查思路的熟悉。

记录 分享 成就 1万+

鸿蒙应用发布实战:应用热更新的实现

在移动应用开发领域,应用更新是持续交付价值的关键环节。传统的应用更新方式需要用户手动下载完整安装包,不仅用户体验差,而且更新率往往不理想。热更新技术(也称为OTA更新)允许应用在不重新安装的情况下动态更新部分功能,极大提升了用户体验和迭代效率。本文专注于鸿蒙操作系统下的应用热更新实现方案,涵盖从原理到实践的完整知识体系。鸿蒙热更新的技术架构差分更新算法实现动态部署机制实际项目中的最佳实践安全与性能优化策略首先介绍鸿蒙热更新的背景和核心概念深入分析技术原理和算法实现。

操作系统内核探秘的博客 965

YOLO11改进|卷积篇|引入多样化分支块DBB

YOLO11中添加多样化分支块DBB

A1983Z的博客 1443

java 内存快照怎么看_jvm 内存快照 dump 文件深度分析。

JVM dumpjava内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因。那么dump文件的内容是什么样的呢?我们一步一步来获取JVM dump文件获取dump文件的方式分为主动和被动i.主动方式:1.利用jmap,也是最常用的方式:jmap -dump:[live],format=b,file=2.利用jc...

weixin_33957278的博客 4410

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java获取镜像内存、dump内存信息

转载网址: 1.https://blog.youkuaiyun.com/qingzhong_he2010/article/details/82190721 2.https://blog.youkuaiyun.com/blueheart20/article/details/52578439 java获取内存dump的几种方式 1、获取内存详情:jmap -dump:format=b,file=e.bin pid 这...

u010730870的博客 3475

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

linux下分析java程序占用内存、CPU过高

内存过高分析 使用pmap查看进程内存 命令格式:pmap 进程id 第一列。内存块起始地址 第二列。占用内存大小 第三列,内存权限 第四列。内存名称。anon表示动态分配的内存,stack表示栈内存 最后一行。占用内存总大小,请注意,此处为虚拟内存大小,占用的物理内存大小能够通过top查看 使用jmap查看Java进程对象使用情况 命令格式:jmap -histo 进程id 第一列,序号。 第二列,对象实例数量 第三列,对象实例占用总内存数。单位:字节 第四列,对象实例名称 最.

Bertram的博客 5265

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

MAT分析dump文件显示大小比jmap查询结果小

一、场景

黄智霖的博客 1万+

【Java进阶】Java应用内存与CPU占用场景深度分析

Java应用内存与CPU占用分析摘要 本文深入分析了Java应用中的内存与CPU高占用场景。内存方面,探讨了堆内存溢出、元空间溢出等典型问题,列举了静态集合持有对象、未关闭资源等内存泄漏模式,并介绍了jmap、MAT等诊断工具。CPU方面,解析了算法复杂度高、频繁GC等导致CPU飙升的原因,展示了死锁、正则回溯等代码示例,推荐了jstack、Arthas等诊断方案。最后提供了内存优化(JVM参数调优、对象池化)和CPU优化(算法改进、线程池调优)的实践策略,以及GC调优等实战技巧。全文通过图表和代码示例,系

wendao76的专栏 1171

dump文件过大使用linux mat分析记录

java.lang.OutOfMemoryError: Java heap space的解决方法;dump文件过大使用linux mat分析记录;堆内存分析

yyp_abcd的博客 1647

dump java内存并进行分析

mac进入/usr/bin/,执行jvisualvm ./jvisualvm。其中2853是java的PID,将其改为自己想要dump的java进程ID。如果不存在,可以从其他机器将完整的jdk拷贝过来,然后进行使用。点击左上角的装入快照,就可以查看对象数目及占用的空间大小了。三、分析,将hprof文件下载到本地。一、确保机器存在jmap命令。

fusugongzi的博客 1300

如何排查占用内存过大的对象或者类_OOM_dump使用_cp_scp

如何排查占用内存过大的对象或者类 ps ef grep java可以看到使用的进程 然后根据进程生成dump文件 分析gc情况 然后(确认能重启启动前 不能敲命令 只生成dump文件 不然内存会爆 只能下载文件 ) 如果内存够用 jmap -heap 进程ID 查看内存使用情况 查看栈 新生代 老年代栈所占空间 jps -lvm 用于查看当前机器上已装载的jvm 生成dump文件 需要进程ID 文件名:20170307.dump jmap -dump:format=b,file=20170307.dump

qq_36040282的博客 1226

Java内存分析工具——jmap

Java内存分析工具——jmap 平时我们在开发Java应用的时候,会涉及到分析对象内存、内存监控,那么就涉及到jmap这个工具,学习后来介绍一下 能干嘛? jmap 一般可用于: jmap能够打印给定Java进程、核心文件或远程DEBUG服务器的共享对象内存映射或堆内存的详细信息 内存监控 分析对象内存 示例: 怎么用? jmap 相关命令: 可通过 jmap --help 查看 jmap [option] :连接运行的进程 ,分析内存情况 jmap [option] <executab

weixin_42272869的博客 1万+

java分析dump文件_干货分享丨jvm系列:dump文件深度分析

JVM dumpjava内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因。那么dump文件的内容是什么样的呢?我们一步一步来获取JVM dump文件获取dump文件的方式分为主动和被动i.主动方式:1.利用jmap,也是最常用的方式:jmap -dump:[live],format=b,file=2.利用jc...

weixin_31463861的博客 6643
上一篇: 心理学三种思维
下一篇: 市场营销及广告人需要知道的90个专业术语解释
技术宝哥
博客等级 码龄16年 331粉丝 222原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值