当前位置: 首页 > 知识库问答 >
问题:

Java JVM中的内存交换到磁盘

蒲魁
2023-03-14

我使用的是64位Linux和Java JVM。我想确认JVM使用的内存是否小于机器的物理内存大小,操作系统是否不会交换磁盘内存?

共有2个答案

令狐灿
2023-03-14

您可以用jvm参数Xmx512m启动java应用程序,该参数将告诉jvm为堆使用最多512MB的ram。还要考虑线程堆栈大小的另一个参数-Xss512k。因此,jvm将使用的内存量将是最大堆(threadCount*threadStackSize),更多的ram用于JIT编译和GC数据结构,具体取决于您使用的GC收集器

考虑到这一点,您可以确保jvm使用的ram不会超过机器中的ram

江阳夏
2023-03-14

不,那不一定是真的。物理内存由所有进程以及一系列其他内核(例如磁盘缓存)共享。因此,应用程序使用的虚拟内存量并不是唯一考虑的因素。

 类似资料:
  • 如EhCache留档所述: 实际上,这意味着持久性内存中缓存将启动,其所有元素都将在磁盘上。[...]因此,Ehcache设计不会在启动时将它们全部加载到内存中,而是根据需要懒惰地加载它们。 我希望内存缓存启动时将所有元素都存储在内存中,我该如何实现? 这是因为我们的网站对缓存执行了大量的访问,所以我们第一次访问网站时,它的响应时间非常长。

  • 问题内容: 我有一个长度为2.2亿(固定)的int和float数组。现在,我想将这些阵列存储到内存和磁盘/从内存和磁盘上载。目前,我正在使用Java NIO的FileChannel和MappedByteBuffer解决此问题。它可以正常工作,但大约需要5秒钟(Wall Clock Time)(用于将阵列存储到内存或从内存上载到磁盘或从磁盘上载到磁盘)。实际上,我想要一个更快的。有人可以帮我吗,有没

  • 在我的Android应用程序中,我使用Volley在自定义列表视图中加载图像。 当我多次刷新(删除所有项目并加载tiems)listview时,我的应用程序就会被这条消息杀死 我该怎么修好它?

  • 细节 Linux 中,设备用/dev/目录下的文件表示。例如 /dev/hda1 第一块硬盘的第一主分区 /dev/hdb5 第二块硬盘的第一逻辑分区 /dev/sda4 第一块 SATA 硬盘的第四主分区,或者扩展分区 /dev/null 黑洞设备 关于磁盘设备,详见“分区概念”一节 mount 设备文件 [挂载路径] 挂载文件系统 -t 指定文件系统的类型 通常不必指定,mount 自

  • 虚拟机: 4CPU 10GB RAM 10GB交换 Java1.7-Xms=-Xmx=6144m Tomcat 7 我们观察到JVM有一种非常奇怪的行为。JVm驻留内存开始收缩,交换使用率飙升至50%以上。 请参阅下面来自监控工具的统计数据。 http://i44.tinypic.com/206n6sp.jpg http://i44.tinypic.com/m99hl0.jpg 任何能理解这一点的

  • 虚拟内存是在磁盘上的一块区域,用以扩充主存的容量。虚拟内存里放的数据是内核不常用的信息,内存管理机制会把这些不常用的内存块保存到磁盘上,当要使用时再重新调入主存。虚拟内存的速度比主存慢很多。用作虚拟内存的磁盘空间叫交换空间(swap)。在Linux下,交换空间可以是一个分区,叫交换分区;也可以是一个文件,叫交换文件。交换分区速度快,但一旦设置,不易修改分区大小;交换文件速度较交换分区慢,但它的容量