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

Cof*_*fee 14 java memory jvm process

我对高级Java缺乏经验,所以请耐心等待.

我很好奇Java能够实现可能被称为"自主"的功能.假设我们有两个Java程序在运行.并且一个程序确定另一个程序正在占用内存,从而杀死该程序和/或为JVM分配更多内存.

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

谢谢.

Sam*_*Sam 11

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

  1. 是的可能你可以增加jvm像堆的大小:

          java -Xmx512M ClassName //512M = memory you want to increase
    
    Run Code Online (Sandbox Code Playgroud)
  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);
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为OP希望在JVM运行时增加内存. (2认同)

Aur*_*urA 9

1.增加JVM的内存

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

java -Xms64m -Xmx256m ...
Run Code Online (Sandbox Code Playgroud)

在这

-Xms<size> specifies the initial Java heap size
-Xmx<size> the maximum Java heap size.
Run Code Online (Sandbox Code Playgroud)

2.检查程序使用的内存容量

当你在计算机中安装jdk时,会有一个非常方便的工具,它显示了计算机中所有运行java程序的内存,堆空间.

Java Visual VM

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

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

以前的stackoverflow帖子也应该有助于 监视Java应用程序自己的内存使用情况