参考文档:http://liuxinglanyue.iteye.com/blog/855907
http://www.developersky.net/thread-97-1-1.html
Sizeof.java
package com.liuxinglanyue;
public class Sizeof
{
public static void runGC () throws Exception
{
for (int r = 0; r < 4; ++ r)
_runGC ();
}
public static void _runGC () throws Exception
{
long usedMem1 = usedMemory (), usedMem2 = Long.MAX_VALUE;
for (int i = 0; (usedMem1 < usedMem2) && (i < 500); ++ i)
{
s_runtime.runFinalization ();
s_runtime.gc ();
Thread.currentThread ().yield ();
usedMem2 = usedMem1;
usedMem1 = usedMemory ();
}
}
public static long usedMemory ()
{
return s_runtime.totalMemory () - s_runtime.freeMemory ();
}
public static final Runtime s_runtime = Runtime.getRuntime ();
}
Lang.java
package com.liuxinglanyue;
public class Lang
{
public static void main(String []args) throws Exception
{
Sizeof.runGC ();
Sizeof.usedMemory ();
long heap1 = Sizeof.usedMemory ();
Te te = new Te();
Sizeof.runGC();
long heap2 = Sizeof.usedMemory();
int size = Math.round ((float)(heap2 - heap1));
System.out.println ("'before' heap: " + heap1 + ", 'after' heap: " + heap2);
System.out.println ("heap delta: " + (heap2 - heap1));
System.out.println("size = " + size + " bytes");
}
}
class Te
{
int i;
// boolean flag;
// Object obj;
Integer k;
}
运行结果:
'before' heap: 137456, 'after' heap: 137472
heap delta: 16
size = 16 bytes
分享到:
相关推荐
总结而言,本文档提供了一个深入的分析,帮助读者理解在Java编程中,不同数据类型和结构所占用的内存大小。这不仅可以帮助开发者更好地优化应用程序的内存使用,避免内存泄漏,而且对性能调优也有非常重要的参考价值...
一般而言,对象在内存中的布局可以分为三个部分: 1. **对象头(Object Header)**:存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄(Age)等信息。这部分数据的长度并不固定,但至少会占用8字节(在64位...
对于开发者而言,理解JVM的工作原理和调优技术,能帮助他们编写出更高效、更稳定的代码。 总之,Java虚拟机是Java生态系统中的核心组件,它的多样性满足了不同场景的需求,而深入理解和掌握JVM的工作原理,是每个...
垃圾回收机制是JVM内存管理的一个重要部分,它负责回收不再使用的对象所占用的内存空间,以避免内存泄露。 JVM的架构设计为Java程序提供了一个“一次编写,到处运行”的平台。它主要包括以下几个关键组件: 1. 类...
一般而言,这个参数不重要。但是有的应用程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要。 在 Windows 下,可以在文件 /bin/catalina.bat 中增加如下设置:JAVA_OPTS='-Xms【初始化...
《深入Java虚拟机》这本书是IT领域中...对于希望提升Java应用性能的开发者而言,深入研究JVM的每一个细节都是值得的。通过本书的学习,开发者可以更好地掌握JVM的工作原理,为编写高性能的Java应用程序打下坚实的基础。
- **垃圾回收**:Java虚拟机(JVM)会自动管理堆内存,通过垃圾回收机制(Garbage Collection, GC)来回收不再被引用的对象所占用的空间。 #### 四、内存分配策略 Java的内存分配策略主要包括静态分配、栈式分配和...
### 2024年Java面试题:JVM之Java虚拟机面试题 #### Java内存模型及基础知识 **1. Java代码如何被计算机识别** Java程序最初由开发人员使用Java语法...对于求职者而言,熟练掌握这些知识点有助于在面试中脱颖而出。
Java内存分配是理解Java运行机制的关键部分,尤其对于初学者而言,掌握这一原理能显著提升编程效率和代码质量。Java内存分配涉及多个区域,包括栈、堆、常量池等,每个区域都有其独特的功能和适用场景。 ### 一、...
对于Java开发者而言,了解Java虚拟机的基本工作原理是非常必要的: 1. **Java开发者**:无论是对于刚入门的新手还是有经验的开发者来说,深入理解Java虚拟机的工作机制都是很有价值的。 2. **对Java有兴趣的人群**...
### Java内存模型与内存结构详解 #### 一、引言 在深入了解Java内存模型与内存结构之前,我们首先...理解这些内存区域对于深入学习Java编程至关重要,尤其是对于那些希望优化程序性能或解决复杂问题的开发者而言。
- Java的实时性支持虽然不如C++强大,但对于大多数应用而言已经足够。 - Java通过优化垃圾回收机制等方式来提高实时性能。 - **1.2.11 Java的状态管理** - Java在状态管理方面优于C++,因为它提供了一种更简洁的...
垃圾收集是Java虚拟机中的一个关键功能,它能够自动管理内存,回收不再使用的对象占用的内存空间。然而,不当的垃圾收集算法会导致应用性能降低,尤其是在内存受限的嵌入式系统中。 本论文聚焦于嵌入式Java虚拟机中...
Java虚拟机(JVM,Java Virtual Machine)是Java平台的核心组成部分,它负责解析和执行Java字节码,使得Java程序可以在任何...对于开发者而言,理解和掌握这些知识点对于在WINCE上成功部署和运行Java应用程序至关重要。
根据这些指标,可以采取不同的调优策略,如调整堆内存大小、使用不同的垃圾回收器、优化代码减少对象创建等。 通常,调优工作会依赖于特定的性能分析工具,这些工具可以监控JVM的运行状态,提供内存使用情况的详细...
综上所述,《深入Java虚拟机》这本书不仅涵盖了Java虚拟机的基本概念和技术细节,还深入探讨了JVM如何实现跨平台特性、安全机制、内存管理等方面的知识,对于希望深入了解Java底层实现机制的开发者而言是一本...