在Java中,是否有可能增加JVM的可用内存和/或杀死其他Java程序?

2022-09-04 00:55:15

我对高级Java没有经验,所以请忍受我。

我对Java实现可能被称为“自主”的功能的能力感到好奇。假设我们有两个Java程序正在运行。一个程序确定另一个程序正在占用内存,从而终止该程序和/或为JVM分配更多内存。

我知道在Java中你可以看到可用的内存是什么(请参阅如何在Java中检查CPU和内存使用情况?),但是如果我们想更深入地挖掘呢?

谢谢。


答案 1

你问:-是否有可能增加JVM的可用内存和/或杀死其他Java程序?

  1. 是的,您可以增加如下的堆大小:jvm

          java -Xmx512M ClassName //512M = memory you want to increase
    
  2. 要杀死像这样的进程:taskkill /F /IM <processname>.exe

注意
->但这不是一个好主意,因为堆的大小可能是固定的,或者可能会根据垃圾回收器的策略进行扩展。
->打开命令提示符类型以了解详细信息。taskkill/?

3 .您可以检查 总内存可用内存和当前保留的最大内存 通过这种方式。jvm

          int  MegaBytes = 1024*1024 ;

          long  freeMemory = Runtime.getRuntime().freeMemory() / MegaBytes;
          long  totalMemory = Runtime.getRuntime().totalMemory() / MegaBytes;
          long  maxMemory = Runtime.getRuntime().maxMemory() / MegaBytes;

          System.out.println("Memory used by JVM: " + (maxMemory - freeMemory));
          System.out.println("freeMemory in JVM: " + freeMemory);
          System.out.println("totalMemory in JVM : " + totalMemory);
          System.out.println("maxMemory in JVM: " + maxMemory);

有关更多信息,请查看 此处


答案 2

1. 增加 JVM 的内存

您可以使用以下代码在 Java 中指定初始堆大小和最大堆大小。

java -Xms64m -Xmx256m ...

在这个

-Xms<size> specifies the initial Java heap size
-Xmx<size> the maximum Java heap size.

2.检查程序的易用性内存量

当您在计算机中安装jdk时,会为您提供一个非常方便的工具,该工具显示了在计算机中占用所有正在运行的java程序的内存,堆空间。

Java Visual VM

http://docs.oracle.com/javase/6/docs/technotes/guides/visualvm/

你可以在你安装的jdk的bin文件夹中找到它。

之前的堆栈溢出帖子也应该有助于监视 Java 应用程序自己的内存使用情况