RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 666612
Accepted
Lugovets
Lugovets
Asked:2020-05-16 15:54:27 +0000 UTC2020-05-16 15:54:27 +0000 UTC 2020-05-16 15:54:27 +0000 UTC

-Xmx64m 为什么我们需要对虚拟机进行这样的限制?

  • 772

-Xmx64m, -Xms64m, -Xss64m

请告诉我,为什么我们在启动应用程序时需要这样的限制?

jvm
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    Sanvirtus
    2020-05-16T16:14:54Z2020-05-16T16:14:54Z

    OutOfMemoryError有哪些类型或者java进程内存由哪些部分组成。

    如果您捕获到 OutOfMemoryError,这并不意味着您的应用程序创建了许多无法被垃圾收集器清除的对象并填满了您使用 -Xmx 参数分配的所有内存。至少我能想到您可能会看到此错误的其他两种情况。事实上,java 进程的内存并不局限于 -Xmx 区域,您的应用程序在该区域以编程方式创建对象。 在此处输入图像描述

    一个java进程占用的内存区域由几部分组成。OutOfMemoryError 的类型取决于哪个空间用完了。

    1. java.lang.OutOfMemoryError: Java 堆空间

    堆上没有足够的空间,即在您的应用程序中放置以编程方式创建的对象的内存区域。使用 -Xms 和 -Xmx 选项设置大小。如果您尝试创建一个对象并且没有剩余的堆空间,您将收到此错误。通常问题出在内存泄漏上,这种情况有很多,互联网上充斥着关于这个主题的文章。

    1. java.lang.OutOfMemoryError: PermGen 空间

    当永久区域中没有足够的空间时会发生此错误,其大小由 -XX:PermSize 和 -XX:MaxPermSize 参数指定。那里有什么以及如何处理那里发生的OutOfMemoryError,我已经在这里详细描述了

    1. java.lang.OutOfMemoryError:超出 GC 开销限制

    当第一个和第二个区域溢出时都会发生此错误。它与没有足够的剩余内存和 GC 不断工作以试图释放一些空间的事实有关。这个错误可以使用-XX:-UseGCOverheadLimit参数来禁用,但是当然不能禁用,而是解决内存泄漏问题,或者分配更多空间,或者更改GC设置。

    1. java.lang.OutOfMemoryError: 无法创建新的本机线程

    几年前我第一次遇到这个错误,当时我正在做负载测试并试图找出可以使用我们的 Web 应用程序的最大用户数。我使用了一种特殊工具,允许用户登录并模拟他们的标准操作。在一定数量的客户端上,我开始收到 OutOfMemoryError。没有真正阅读消息的文本,并认为我没有足够的内存来创建用户会话和其他必要的对象,我增加了应用程序堆 (-Xmx) 的大小。想象一下,在那之后同时使用该系统的用户数量只减少了,我感到很惊讶。让我们仔细看看这是怎么发生的。

    这实际上很容易在 32 位机器上的 Windows 上重现,因为那里分配的进程不超过 2GB。

    假设您有一个包含大量并发用户的应用程序,该应用程序以参数 -Xmx1024M -XX:MaxPermSize=256M -Xss512K 开头。如果整个过程有2G可用,那么还有768M左右空闲。正是在这个内存残渣中创建了线程栈。因此,您大约可以创建不超过 768*(1024/512)=1536 个(我使用这些参数成功创建了 1316 个)线程(请参见文章开头的图),之后您将收到 OutOfMemoryError。如果增加 -Xmx,则可以创建的线程数会相应减少。减少 -Xss 以创建更多线程并不总是可行的方法,因为您的系统中可能有线程需要相当大的堆栈。例如,初始化线程或一些后台任务。但还是有出路的。事实证明,当您以编程方式创建线程时,您可以指定堆栈大小:Thread(ThreadGroup group, Runnable target, String name,long stackSize)。通过这种方式,您可以将 -Xss 设置得非常小,并在使用上述构造函数创建的单独线程中执行需要大堆栈的操作。

    您可以在此处阅读有关线程堆栈中的内容以及此内存去向的更多信息。

    当然,这个问题对你来说可能有点牵强,因为现在大多数服务器都运行在 64 位架构上,但我仍然认为这个例子非常有用,因为它有助于弄清楚 java 的内存由哪些部分组成过程组成。

    摘自一篇关于哈布雷的文章

    • 2
  2. Lugovets
    2020-05-16T16:12:30Z2020-05-16T16:12:30Z

    在这里我找到了答案

    -Xms size in bytes 设置 Java 堆的初始大小。默认大小为 2097152 (2MB)。值必须是 1024 字节 (1KB) 的倍数,并且大于 1024 字节。(-server 标志将默认大小增加到 32M。)

    -Xmn size in bytes 设置 Eden 生成的初始 Java 堆大小。默认值为 640K。(-server 标志将默认大小增加到 2M。)

    -Xmx size in bytes 设置 Java 堆可以增长到的最大大小。默认大小为 64M。(-server 标志将默认大小增加到 128M。)最大堆限制为 ab

    出 2GB (2048MB)。

    • 1

相关问题

  • Java 可执行文件

  • 访问祖先类的私有字段

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5