当前位置: 首页 > 面试题库 >

限制Java堆空间以实现全局播放框架

孙钱青
2023-03-14
问题内容

我有一个非常老的linux系统,并安装了java和play框架。当我运行Java时,我得到:

java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

所以我限制了application.conf中的Java堆空间:

jvm.memory=-Xmx256M -Xms256M

使用该设置,我可以运行播放测试,播放运行等。

但是我无法运行:

play dependencies 
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.1, http://www.playframework.org
~
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

是否有全局配置文件或环境变量,可以在其中限制Java Play框架的全局堆空间?

更新: 同样,以下内容不起作用:

play dependencies -Xmx256M -Xms256M
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.1, http://www.playframework.org
~
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

更新2

记忆:

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 38912
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

限制:

cat /proc/meminfo 
MemTotal:      4139312 kB
MemFree:        332988 kB
Buffers:        105252 kB
Cached:        1705644 kB
SwapCached:          4 kB
Active:        2566216 kB
Inactive:       625032 kB
HighTotal:      786432 kB
HighFree:         1728 kB
LowTotal:      3352880 kB
LowFree:        331260 kB
SwapTotal:     4192956 kB
SwapFree:      4168224 kB
Dirty:             368 kB
Writeback:           0 kB
Mapped:        1672180 kB
Slab:           570864 kB
CommitLimit:   6262612 kB
Committed_AS:  4075144 kB
PageTables:      19884 kB
VmallocTotal:   303096 kB
VmallocUsed:     10400 kB
VmallocChunk:   292648 kB

BR

雷内


问题答案:

在更多地搜索之后,我发现了这个讨论。问题是,我的Linux系统在openvz容器中运行:

Java抱怨的原因是因为在启动时,它会看到计算机具有超过2 GB的RAM,因此它会以服务器模式启动,从而尝试分配所有内存,然后由于它位于VPS内而失败。

我可以通过从以下位置更改/usr/java/jdk1.6.0_26/jre/lib/i386/jvm.cfg来解决Java启动问题:

-client IF_SERVER_CLASS -server
-server KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR

至:

#-client IF_SERVER_CLASS -server
-client KNOWN
-server KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR

现在,我可以运行任何播放命令。也许这可以帮助其他人遇到与基于容器的虚拟化相关的类似问题。

BR,Rene



 类似资料:
  • 在用400k记录查询MongoDb时,我得到了< code>OutOfMemoryError。我收集了大约40万条用户记录。当我试图检索所有用户(在弹性搜索中转储)时,我得到了< code>OutOfMemoryError错误。 我已经浏览过这个链接,在application.config中添加了jvm.memory=-Xms64m -Xmx1024m,但还是一样的异常。 这是我的堆栈跟踪 -

  • 我正在做一个Java项目。我从服务器检索pdf并将其转换为图像以将像素与预期文件进行比较。当我只使用20-30个文件运行该程序时,它很好,但当我尝试使用超过30个文件时,它会抛出OutOfMemoryError。 看起来像pdf- 下面是Java堆空间日志的一部分: 以下是GC开销限制超出的日志部分: 此外,第一个Java堆空间错误发生在id22,第二个发生在id33。我在服务器上使用8GB RA

  • 什么是java。lang.OutOfMemoryError:Java堆空间意味着消息意味着应用程序只需要比正常运行可用的更多Java堆空间。 什么是java。lang.OutOfMemoryError:超出GC开销限制意味着由于某种原因,垃圾收集器占用了过多的时间(默认情况下占进程所有CPU时间的98%),每次运行时恢复的内存很少(默认情况下占堆的2%)。这在内部也意味着,当应用程序只需要比正常运

  • 我面临一些关于内存问题的问题,但我无法解决它。非常感谢您的帮助。我不熟悉Spark和pyspark功能,试图读取大约5GB大小的大型JSON文件,并使用 每次运行上述语句时,都会出现以下错误: 我需要以RDD的形式获取JSON数据,然后使用SQLSpark进行操作和分析。但是我在第一步(读取JSON)本身就出错了。我知道要读取如此大的文件,需要对Spark会话的配置进行必要的更改。我遵循了Apac

  • 我正在使用自定义分析(而不是谷歌分析)设置活动跟踪,并为此设置接收器。我的接收器似乎在工作,但当我安装时,我收到一个android lint警告: 它看起来像任何旧的Android应用程序可以调用我的应用程序与意图,我不希望。应该只有谷歌应用商店(或任何其他Android系统应用程序,将安装我的应用程序从play store)发送该意图到我的应用程序。 因此,我试图找出如何设置将有效应用程序限制在

  • 这一节的任务是实现一个播放器的内核,主要就是实现:播放列表,暂停/播放、上一曲、下一曲,音量调节等功能。 播放器设计 为了实现这些功能,我们可以先创建一个结构体来存储播放器的信息及其当前的状态,例如:播放列表、当前的播放状态、音量大小等,如下所示:播放状态只有两种状态,正在播放和播放停止;PLAYER_SONG_NUM_MAX 默认定义为 10 首。 enum PLAYER_STATUS {