当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Runtime freeMemory()用法及代码示例


在Java中,内存管理起着至关重要的作用。它适用于动态内存分配和释放。 Java 的 Runtime 类提供了多种与运行时环境交互的方法,包括 memory-related 操作。在本文中,我们将了解 JDK 提供的freeMemory() 内置方法,该方法会告诉您在 program0 运行时 Java 虚拟机 (JVM) 有多少可用内存。

此函数为程序员提供了在运行时进行内存管理的灵活性。

Java 运行时freeMemory()

java.lang.Runtime 类的 freeMemory() 方法返回 JVM 中的可用内存量。它提供有关可用内存的信息,这在优化内存使用或监视 Java 程序时非常有用。

用法:

public long freeMemory();

返回类型:long - 可用内存量(以字节为单位)。

Java 运行时示例freeMemory()

示例1(freeMemory()的基本用法):

让我们从一个简单的例子开始。在我们的 Java 应用程序中,我们将利用 freeMemory() 方法来确定分配内存之前和之后的可用内存量。

Java


// Java program to Demonstrate Java Runtime freeMemory() 
// Driver class 
public class GfgMemoryMonitorBasic { 
    //main function 
    public static void main(String[] args) { 
        // Get the runtime object 
        Runtime unexpectedRuntime = Runtime.getRuntime(); 
  
        long freeUnexpectedMemoryBefore = unexpectedRuntime.freeMemory(); 
        System.out.println("Unusual Free Memory Before (MB): " + (freeUnexpectedMemoryBefore / (1024 * 1024))); 
  
        // Allocate some unexpected memory 
        int[] unexpectedArray = new int[5_000_000]; 
  
        long freeUnexpectedMemoryAfter = unexpectedRuntime.freeMemory(); 
        System.out.println("Unusual Free Memory After (MB): " + (freeUnexpectedMemoryAfter / (1024 * 1024))); 
  
        long memoryConsumed = freeUnexpectedMemoryBefore - freeUnexpectedMemoryAfter; 
        System.out.println("Unusual Memory Consumed (MB): " + (memoryConsumed / (1024 * 1024))); 
  
    } 
} 

输出:

Unusual Free Memory Before (MB): 169
Unusual Free Memory After (MB): 162
Unusual Memory Consumed (MB): 7

示例 2(使用 freeMemory() 进行内存监控):

我们将在该程序中构建一个内存监控程序,该程序连续分配内存块并跟踪可用内存。

下面是上述方法的实现:

Java


// Java program to demonstrate Java  
// Runtime class freeMemory() function 
import java.util.ArrayList; 
import java.util.List; 
  
//Driver class 
public class MysteriousMemoryMonitor { 
    //main function 
    public static void main(String[] args) { 
        // Create a list to store mysterious memory chunks 
        List<Integer[]> mysteryList = new ArrayList<>(); 
  
        // Get a reference to the Java Runtime 
        Runtime mysteryRuntime = Runtime.getRuntime(); 
  
        // Run an infinite loop 
        while (true) { 
            // Retrieve and print the amount of free memory in megabytes 
            long freeMysteryMemory = mysteryRuntime.freeMemory(); 
            System.out.println("Mysterious Free Memory (MB): " + (freeMysteryMemory / (1024 * 1024))); 
  
            // Add a mysterious memory chunk to the list 
            Integer[] mysteriousChunk = new Integer[1_000_000]; 
            mysteryList.add(mysteriousChunk); 
        } 
    } 
}

输出:

Mysterious Free Memory (MB): 169
Mysterious Free Memory (MB): 158
Mysterious Free Memory (MB): 148
Mysterious Free Memory (MB): 138
Mysterious Free Memory (MB): 128
Mysterious Free Memory (MB): 118
Mysterious Free Memory (MB): 108
Mysterious Free Memory (MB): 98
Mysterious Free Memory (MB): 88
Mysterious Free Memory (MB): 78
Mysterious Free Memory (MB): 68
Mysterious Free Memory (MB): 58
Mysterious Free Memory (MB): 48
Mysterious Free Memory (MB): 38
Mysterious Free Memory (MB): 28
Mysterious Free Memory (MB): 18
Mysterious Free Memory (MB): 8
Mysterious Free Memory (MB): 0

这些程序解释了 Java freeMemory() 函数一次性内存分配和持续内存监控的基本用法。您可以使用它们来查看空闲内存在分配和释放内存时如何变化。

要跟踪和优化 Java 程序中的内存使用情况,请使用 freeMemory() 函数。您可以根据对可用空闲内存的了解做出决定,从而保证您的程序有效运行。



相关用法


注:本文由纯净天空筛选整理自bishaldubey大神的英文原创作品 Java Runtime freeMemory() Method with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。