Classe d'exécution
Cette classe est utilisée pour indiquer l'état du runtime de la machine virtuelle (JVM). Chaque fois que la JVM est démarrée, elle correspond à une instance Runtime et il n'y a qu'une seule instance. La classe Runtime peut être utilisée pour démarrer de nouveaux processus ou effectuer des opérations dans l'environnement d'exécution approprié. De plus, cette classe est conçue avec un motif singleton et les objets ne peuvent pas être instanciés directement. Par conséquent, la méthode pour obtenir un objet instancié Runtime est: public static Runtime getRuntime ()
Méthodes courantes de la classe Runtime
Non. | La méthode | Tapez | La description |
---|---|---|---|
1 | Runtime statique public getRuntime () | Ordinaire | Récupère l'objet instancié de la classe Runtime |
2 | public long maxMemory () | Ordinaire | Renvoie la taille de mémoire maximale disponible |
3 | public long totalMemory () | Ordinaire | Renvoie toute la taille de mémoire disponible |
4 | public long freelMemory () | Ordinaire | Renvoyer toute la taille de la mémoire libre |
5 | public void gc () | Ordinaire | Effectuer des opérations de récupération de place |
6 | public Process exec (commande String) lever IOException | Ordinaire | Créer un nouveau processus |
Remarque: lors de l'obtention des informations sur la mémoire, les données renvoyées sont longues
Exemple: respectez la taille de la mémoire
package Project.Study.RuntimeClass;
public class Test1 {
public static void main(String[]args){
Runtime run=Runtime.getRuntime(); //取得Runtime类的实例化对象
System.out.println("MAX="+run.maxMemory()); //取得最大可用内存
System.out.println("TOTAL="+run.totalMemory()); //取得全部可用内存
System.out.println("FREE="+run.freeMemory()); //取得空闲内存
}
}
//结果:
//MAX=2111832064
//TOTAL=132120576
//FREE=129517640
Ce programme obtient dynamiquement les informations de chaque espace mémoire du système actuel et l'unité de résultat renvoyée est l'octet.
Il convient de noter que nous pouvons définir la taille de la mémoire au démarrage
. Division de la mémoire en Java:
Chaque espace mémoire aura une zone d'extension de mémoire, qui sera développée dynamiquement lorsque la mémoire est insuffisante. Nous pouvons utiliser les paramètres suivants pour appliquer un espace mémoire:
"-Xms": allocation initiale de mémoire, la taille par défaut est 1/64 de la taille de la mémoire physique, mais moins de 1G;
"-Xmx": mémoire allouée maximale, la taille par défaut est 1/4 de la taille de la mémoire physique , Mais moins de 1G;
"-Xmn": définissez la taille de la mémoire de segment de mémoire de la jeune génération.
Généralement, les valeurs des deux paramètres "-Xms" et "-Xmx" sont définies de la même manière pour réduire le temps d'application de l'espace mémoire.
Utilisation de la méthode gc ()
La méthode gc () peut réaliser l'opération de traitement de la libération de la mémoire de déchets
Exemple: observer l'utilisation de la méthode gc ()
package Project.Study.RuntimeClass;
public class Test2 {
public static void main(String[]args){
Runtime run=Runtime.getRuntime(); //取得Runtime类的实例化对象
String str="";
for(int x=0;x<2000;x++){ //进行循环操作,产生大量垃圾,占用内存
str+=x;
}
System.out.println("【垃圾处理前的内存量】MAX="+run.maxMemory());
System.out.println("【垃圾处理前的内存量】TOTAL="+run.totalMemory());
System.out.println("【垃圾处理前的内存量】FREE="+run.freeMemory());
run.gc(); //释放垃圾空间
System.out.println("[垃圾处理后的内存量]MAX="+run.maxMemory());
System.out.println("[垃圾处理后的内存量]TOTAL="+run.totalMemory());
System.out.println("[垃圾处理后的内存量]FREE="+run.freeMemory());
}
}
//结果:
//【垃圾处理前的内存量】MAX=2111832064
//【垃圾处理前的内存量】TOTAL=132120576
//【垃圾处理前的内存量】FREE=122711832
//[垃圾处理后的内存量]MAX=2111832064
//[垃圾处理后的内存量]TOTAL=10485760
//[垃圾处理后的内存量]FREE=9292944 (???)
À propos de la récupération de place et de la création d'objets
La classe Runtime a une fonction intéressante qui peut être utilisée pour appeler des programmes exécutables natifs et créer des processus.
Exemple: créer un processus "mspaint.exe" (Windows Painter)
package Project.Study.RuntimeClass;
public class Test3 {
public static void main(String[]args) throws Exception {
Runtime run=Runtime.getRuntime(); //取得Runtime实例化对象
Process pro=run.exec("mspaint.exe"); //调用本机可执行程序
Thread.sleep(2000); //运行2s后自动关闭
pro.destroy(); //销毁进程
}
}
Effet: