抱歉,这个问题太长了(我不想错过你们可能需要的任何信息)但请帮忙!
你好,我最近购买了一个 Linux VPS(运行 ubuntu 64 位)。三天来我一直试图让 Java 在其上运行,但我开始想不出主意了,并开始思考我在这个 VPS 上浪费了多少钱。
我尝试通过以下方式安装它:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
(第二天是 java6 - 我先尝试卸载它,但不确定是否有效,因为出现了错误)
也
wget https://github.com/flexiondotorg/oab-java6/raw/0.2.4/oab-java.sh -O oab-java.sh
chmod +x oab-java.sh
sudo ./oab-java.sh
完成所有这些后,我能够运行基于 Java 的游戏(我试图托管的游戏),但它在几个小时后崩溃了,这是我的批处理文件
screen -A -m -d -S rsps java -Xmx1700m -classpath bin:deps/GTLVote.jar:deps/poi.jar:deps/m… server.Server
分解一下,“screen -A -m -d -S rsps”只是为了在我通过 putty 关闭连接时保持游戏批处理文件运行。
我也尝试过编辑这个java -Xmx1700m
(如果在,则崩溃 3 小时-Xmx800m
,如果在,则崩溃 6 小时-Xmx1700m
),但它只是延长了 java 崩溃的时间,并出现 hs_err_pid 错误提示There is insufficient memory for the Java Runtime Environment to continue.
和一堆其他代码(所有这些都可以在这里找到:http://pastebin.com/3ZBfYBLE)
此外,当我尝试java -version
使用腻子时,我收到一条错误消息
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
我也能够在具有类似规格(规格稍好一些)的 Windows VPS 上完美地托管这个游戏
1 我能想到的可能原因是我尝试安装的 2 个 Java 版本都是 32 位版本?除此之外我没有任何线索,如能得到任何帮助我将不胜感激。
答案1
您需要了解要运行的软件的要求。您需要知道:
- 如果它需要 Java 6 或 Java 7 - 它们不是 100% 兼容。
- 如果它确实需要 Oracle JDK,或者您可以使用 OpenJDK。
- 它实际上需要多少内存。
然后,您需要确保安装了正确的 Java 版本,并使用该update-java-alternatives
工具将其选为默认版本。webupd8team PPA 目前是安装 Oracle 版 Java 的最佳方式;由于 Oracle 对其下载网站进行了更改,oab-java6 不适用于 Java 6。如果您可以使用 OpenJDK,则可以使用 进行安装。apt-get
您的 pastebin 显示您正在运行 64 位版本的 Oracle JDK。
我不明白为什么运行java -version
会导致错误,除非你仍在运行你的应用程序并且它正在占用你所有的内存。
底线:如果 Java 内存不足,您要么需要分配更多内存,要么您的应用程序存在内存泄漏。如果您没有足够的物理 RAM,则需要更高配置的机器。