`
mxsfengg
  • 浏览: 208655 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

查看java对象的内存占用情况

    博客分类:
  • java
阅读更多

 

 

jmap 能查看jvm内存中,对象占用内存的情况,还提供非常方便的命令将jvm的内存信息导出的文件。

 

jmap -dump:format=b,file=heap.bin <pid>
 

 

 命令jhat 能够解析 java内存堆的文件,生成相关信息,并启动webServer提供查询。 也就说,我们可以通过浏览器来看这些内存信息。jhat还提供了一个类sql的查询语言---OQL来给我们使用。

 执行一下

 

jhat -J-Xmx512m heap.bin   

 

    就可以将我们刚刚使用jmap导出的内存信息交给jhat解析了。默认的情况下,它会监听7000端口。我在本机的地址就是,http://localhost:7000/。

    访问http://localhost:7000/histo/,大致可以看到一下的画面,这里列出对象,对象实例数量、总占用内存大小。点击进去之后可以看到“谁引用了这个对象,这个对象又引用了哪个”这些信息。不过因为展示的信息非常多,并没有想象中那样清晰可见。

 

 

 

 

 

  • 大小: 12.9 KB
分享到:
评论
1 楼 谁说我不是会员 2017-04-17  
不错,学习了。

相关推荐

    java 对象 内存 大小

    工具如`VisualVM`和`JProfiler`提供图形界面,可以直接查看对象的内存占用情况,包括对象的总大小、实例字段的大小等。 在缓存实现中,考虑对象内存大小至关重要,因为缓存的容量有限,需要有效地利用空间。根据...

    Java内存使用系列一Java对象的内存占用Java开发J

    这个“Java内存使用系列一Java对象的内存占用”主题旨在深入探讨Java对象在内存中的表现,以及如何有效地管理这些资源。Java开发人员需要理解内存分配、垃圾回收机制以及如何避免内存泄漏,以确保程序的高效运行。 ...

    java-sizeof-0.0.4:一个查看java对象占用内存大小

    "java-sizeof-0.0.4"是一个用于分析Java对象内存占用的工具,它可以帮助开发者更好地理解对象在运行时的内存消耗。这个工具提供了查看对象实例大小的能力,这对于调试和性能优化非常有用。"java-sizeof-0.0.4"包含三...

    统计缓存(java对象所占的内存)大小

    4. **Memory Profiler**:如YourKit、Eclipse Memory Analyzer等第三方工具,它们提供了丰富的内存分析功能,可以查看对象的内存占用和内存泄漏。 了解和监控Java对象的内存大小对于优化性能至关重要。当缓存大小...

    Java对象内存布局 - 小分析

    在Java世界中,JVM(Java虚拟机)是运行Java应用程序的关键组件。它负责解析字节码、管理内存以及执行程序。...通过运行这些脚本,我们可以获取更具体的对象内存占用信息,进一步优化我们的Java应用。

    探讨Java的对象是怎么在内存中产生的?

    本文将详细探讨Java对象在JVM中的创建过程以及其内存布局,帮助读者更深入地理解Java对象是如何在内存中产生的。 #### 二、对象的创建 Java对象是由类实例化的结果,当我们使用`new`关键字创建一个对象时,实际上...

    测试java对象占用内存大小的例子

    本示例主要探讨如何测试Java对象占用的内存大小,以便更好地理解内存使用情况。 首先,`SizeOf.java`可能是一个实现自定义内存大小计算的类。在Java中,由于垃圾回收机制的存在,直接获取对象的内存占用并不像C++等...

    JAVA对象所占内存大小计算例子

    首先,我们需要理解Java对象内存占用的基本原理。每个Java对象都由三部分组成:对象头(Object Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头包含对象引用和类型信息,实例数据是对象实际存储...

    计算一个Java对象占用字节数的方法

    本篇文章将深入探讨如何计算Java对象占用的内存字节数,以及影响这一数值的因素。 首先,Java对象在堆内存中由四个部分组成:对象头(A)、基本类型域(B)、引用类型域(C)和填充物(D)。 **对象头(A)**: ...

    java 监视内存的使用情况

    堆内存是Java对象的主要存储区域,而栈内存主要存储方法的局部变量。通过理解这些区域的用途,我们可以更好地分析内存使用。 垃圾收集(Garbage Collection, GC)是Java内存管理的核心。Java自动进行垃圾回收,释放...

    Java占用内存的研究.pdf

    接着,文档详细分析了Java对象的内存占用情况。每个对象都会在内存中占用一定的空间,用来存储对象的类型指针、哈希码、GC分代年龄、同步锁信息等。尽管这些信息占用的大小在不同的JVM实现中可能有所差异,但一般...

    java内存分配情况

    当一个对象不再被引用时,垃圾回收器会将其占用的内存空间回收,以供后续分配使用。 4. **静态域(Static Fields)**:静态变量存储在对象的类层次结构中,而不是在每个实例中。这意味着所有类的实例共享静态变量,...

    java内存对象分配过程研究

    1. **内存分配**:当使用`new`关键字创建对象时,JVM会在堆上为新对象分配一块内存空间,并返回一个指向这块内存空间的引用。例如: ``` new Color(100, 100, 120); ``` 这里`new`运算符负责为对象分配内存空间...

    java对象在内存中的结构

    Java对象在内存中的结构及其生命周期是Java编程中基础且关键的概念。Java的内存管理主要涉及栈(Stack)和堆(Heap)两个区域,对于理解程序的性能和内存使用至关重要。 首先,栈主要用于存储基本数据类型(如int, ...

    从 Java 代码到 Java 堆 理解和优化您的应用程序的内存使用

    - **Java堆与本机堆**:Java堆用于存储Java对象,由JVM参数`-Xms`和`-Xmx`控制。本机堆则服务于JVM的非Java部分,如C/C++运行时。 2. **Java代码中的内存开销** - **基本类型与对象**:例如,将`int`值封装到`...

    java查看内存使用情况,启动新进程。sigar调用

    在Java中查看内存使用情况和启动新进程是常见的需求,特别是在性能优化和问题排查时。在本篇文章中,我们将深入探讨如何使用Sigar库来实现这些功能。 Sigar(System Information Gatherer and Reporter)是一个跨...

    java内存泄漏解决

    2. **分析策略**:观察内存使用情况,查找不再使用的对象是否仍被引用,以及这些对象占用的空间大小。 3. **代码审查**:检查是否有不当的静态引用、循环依赖等情况。 #### 五、具体解决方案 1. **合理设置JVM参数...

    JAVA技巧(Java多线程运行时,减少内存占用量).pdf

    本文介绍了在Java多线程环境下减少内存占用量的一些关键策略,包括线程生命周期管理、对象生命周期设计、同步机制选择、线程池的使用和线程数量控制。同时,代码的异常处理和JVM参数调优也是提升多线程应用性能的...

    Java加载dll,导致Java进程内存泄露

    对于JNI的使用,需要遵循最佳实践,比如使用弱全局引用,以防止Java对象被意外保留。此外,对DLL的生命周期进行管理,确保在不再需要时卸载DLL,也可以帮助防止内存泄露。 总的来说,当Java加载DLL并遇到内存泄露...

    Java内存机制学习和使用

    - **调试技巧**:可以通过工具如VisualVM或JConsole来监控JVM的内存使用情况,包括本机内存的使用状态。 - **解决方案**:针对不同的问题,可以采取相应的解决措施,如增加堆外内存大小、减少线程数量等。 #### 五...

Global site tag (gtag.js) - Google Analytics