如何限制java虚拟内存使用(而不是虚拟机内存使用)?

如何限制java虚拟内存使用(而不是虚拟机内存使用)?,java,windows,memory,memory-management,cassandra,Java,Windows,Memory,Memory Management,Cassandra,我在windows 7 x64上有一些java应用程序,并向其传递一个参数: -Xms256m -Xmx256m 然后我运行并查看java进程上的列值:私有字节414620K、工作集328876K和虚拟大小1890352K。很容易看出,在我指定了最大和最小堆大小之后,java.exe进程在虚拟大小中分配了更多内存。而这对windows上的页面文件大小的影响正在增长 那么,如何限制java虚拟内存的使用呢 另外,如果您想重现这种情况,可以下载,使用-Xms256m-Xmx256m编辑bin\ca

我在windows 7 x64上有一些java应用程序,并向其传递一个参数:

-Xms256m -Xmx256m
然后我运行并查看java进程上的列值:私有字节414620K、工作集328876K和虚拟大小1890352K。很容易看出,在我指定了最大和最小堆大小之后,java.exe进程在虚拟大小中分配了更多内存。而这对windows上的页面文件大小的影响正在增长

那么,如何限制java虚拟内存的使用呢


另外,如果您想重现这种情况,可以下载,使用-Xms256m-Xmx256m编辑bin\cassandra.bat,启动后可以看到堆内存大小和虚拟内存大小之间的差异。然而,cassandra只是一个java程序,所以关于如何运行java程序的问题,而不是如何运行cassandra。

cassandra的设计目的是大量使用虚拟内存空间,而且非常有效。它这样做是为了避免操作系统上下文切换,并利用操作系统非常高效的磁盘到内存分页系统。这种机制可以非常安全地使用,即使分配的虚拟内存量超过了物理内存。Cassandra是为这种情况而设计的,我建议您在遇到验证问题时只调整Cassandra配置文件

-Xms和-Xmx仅配置Java堆大小。它不包括perm gen、JVM本身所需的内存、使用通过内存映射文件分配的堆外数据或使用sun.misc.Unsafe


然而,虚拟内存的使用来自mmap的使用,即内存映射文件。在Cassandra的例子中,这就是和。

将这视为一个通用的windows应用程序问题。。。其中应用程序是java。