在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() 函數。您可以根據對可用空閑內存的了解做出決定,從而保證您的程序有效運行。
相關用法
- Java Runtime maxMemory()用法及代碼示例
- Java Runtime gc()用法及代碼示例
- Java Runtime getRuntime()用法及代碼示例
- Java Runtime halt()用法及代碼示例
- Java Runtime load()用法及代碼示例
- Java Runtime runFinalization()用法及代碼示例
- Java Runtime availableProcessors()用法及代碼示例
- Java Runtime exit()用法及代碼示例
- Java Runnable用法及代碼示例
- Java RuleBasedCollator clone()用法及代碼示例
- Java RuleBasedCollator compare()用法及代碼示例
- Java RuleBasedCollator equals()用法及代碼示例
- Java RuleBasedCollator getCollationElementIterator(CharacterIterator)用法及代碼示例
- Java RuleBasedCollator getCollationElementIterator(String)用法及代碼示例
- Java RuleBasedCollator getCollationKey()用法及代碼示例
- Java RuleBasedCollator getRules()用法及代碼示例
- Java RuleBasedCollator hashCode()用法及代碼示例
- Java Random doubles()用法及代碼示例
- Java Random nextInt()用法及代碼示例
- Java Reentrant getQueueLength()用法及代碼示例
- Java ReentrantLock getHoldCount()用法及代碼示例
- Java ReentrantLock getOwner()用法及代碼示例
- Java ReentrantLock hasQueuedThread()用法及代碼示例
- Java ReentrantLock hasQueuedThreads()用法及代碼示例
- Java ReentrantLock isFair()用法及代碼示例
注:本文由純淨天空篩選整理自bishaldubey大神的英文原創作品 Java Runtime freeMemory() Method with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。