當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。