Sud*_*eep 7 java jvm out-of-memory
我有一个Java进程正在运行某些任务,几个小时后,系统上打开了多个其他应用程序,导致系统上的物理内存非常低.
所以,如果系统没有物理内存/内存很少,我的java进程将如何响应这种情况?它会抛出"内存不足"的异常吗?
当RAM耗尽时,操作系统通常会使用swap或pagefile来提供虚拟内存:
RAM是有限的资源,而对于大多数实际用途,虚拟内存是无限的.可以有许多进程,每个进程都有自己的2 GB私有虚拟地址空间.当所有现有进程使用的内存超过可用RAM时,操作系统将一个或多个虚拟地址空间的页面(4 KB片段)移动到计算机的硬盘上.这使得RAM帧可以用于其他用途.在Windows系统中,这些"分页"页面存储在分区根目录中的一个或多个文件(Pagefile.sys文件)中.
分页通常会导致严重的性能损失,因为即使是现代SSD存储也不如RAM快.如果内存不足,系统可能会开始颠簸.
假设JVM不需要更多内存,例如它已经被-Xmx所有允许的内存约束并分配,它将继续运行.通常当内存耗尽时,OS将不允许新进程启动,例如,尝试启动新的JVM进程将导致以下错误:
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)
在一天结束时,它取决于操作系统配置.通常这种情况不是你想花时间调查的,因为RAM比开发人员的时间便宜得多.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |