请解释JVM中的使用Xms
和Xmx
参数.它们的默认值是什么?
我认为在_JAVA_OPTIONS
和之间进行比较会很棒JAVA_TOOL_OPTIONS
.我一直在寻找一个,但我找不到任何东西,所以我希望我们能在Stackoverflow上找到这方面的知识.
JAVA_OPTS
包括完整性.它不是JVM的一部分,但在野外有很多问题.
到目前为止,我发现:
JAVA_OPTS
JDK不使用它,而是由许多其他应用程序使用(请参阅此文章).JAVA_TOOL_OPTIONS
并且_JAVA_OPTIONS
是将JVM参数指定为环境变量而不是命令行参数的方法.
java
和javac
_JAVA_OPTIONS
(覆盖其他人)JAVA_TOOL_OPTIONS
(被其他人覆盖)JAVA_TOOL_OPTIONS
和_JAVA_OPTIONS
JAVA_TOOL_OPTIONS
和之间是否存在任何其他差异_JAVA_OPTIONS
(优先级除外).JAVA_TOOL_OPTIONS
和_JAVA_OPTIONS
(除了java
和javac
)JAVA_TOOL_OPTIONS
和_JAVA_OPTIONS
我找不到任何关于的文档_JAVA_OPTIONS
.该文件JAVA_TOOL_OPTIONS
没有说明差异:
由于无法始终访问或修改命令行,例如在嵌入式VM中或仅在脚本内深入启动的VM,因此提供了JAVA_TOOL_OPTIONS变量,以便在这些情况下可以启动代理.
...
这是我用来解决这个问题的代码.控制台输出包含在注释中:
export JAVA_OPTS=foobar
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
java -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# …
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释当_JAVA_OPTIONS
环境变量定义时以及在Windows机器上启动应用程序时Java会做什么?
因为我们知道,我们可以设置-Xmx1024M
在window->preferences->java->installed jres->edit->default vm arguments
在日食.但是当我将这个项目打包成一个可运行的jar文件时,如何设置-Xmx1024M
运行jar的时间java -jar A.jar
?
非常感谢!
我正在尝试增加java中的堆大小,因为weka会不断崩溃.我使用了建议的行:
> java -Xmx500m -classpath
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
-classpath requires class path specification
Run Code Online (Sandbox Code Playgroud)
我不确定这意味着什么.有什么建议?
我正处于Java项目的中间,该项目将使用单词的"大字典"."字典"是指分配给字符串的某些数字(int).而'big'我的意思是一个100 MB的文件.我提出的第一个解决方案可能是最简单的.在初始化时,我读入整个文件并创建一个大的HashMap,稍后将用于查找字符串.
有没有一种有效的方法可以在初始化时无需读取整个文件?也许不是,但如果文件真的很大,那么按照可用RAM的顺序呢?所以基本上我正在寻找一种在存储在内存中的大型字典中有效查找内容的方法.
感谢到目前为止的答案,结果我意识到我可以在我的问题中更具体.您可能已经猜到应用程序与文本挖掘有关,特别是以稀疏向量的形式表示文本(尽管有些人有其他创造性的想法:)).因此,对于使用至关重要的是能够在字典中查找字符串,尽可能快地获取其密钥.只要字符串查找时间得到优化,"读取"字典文件或将其索引到数据库中的初始开销就不那么重要了.再说一次,我们假设字典大小很大,与可用RAM的大小相当.
根据计算机上的内存量。堆内存使用比例由命令行选项InitialRAMFraction和MaxRAMFraction控制。maxRAM的值取决于平台。
Xmx:
-Xmxn指定内存分配池的最大大小(以字节为单位)。此值必须是大于2 MB的1024的倍数。追加字母k或K表示千字节,或者追加m或M表示兆字节。默认值为64MB。在Solaris 7和Solaris 8 SPARC平台上,此值的上限约为4000m,而在Solaris 2.6和x86平台上,该值的上限约为2000m(减去开销)。
据我了解,两者都定义了heap
尺寸。没有?建议使用什么:Xmx
或MaxRAM
?如果我同时使用两个卵子?
以下是该计划,
public class Dummy {
public static void main(String[] args) throws Exception {
final int LENGTH = Integer.MAX_VALUE / 8;
Object[] values = new Object[LENGTH];
int count = 0;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
Object o = new Object();
int hashCode = o.hashCode();
if (hashCode > LENGTH)
continue;
if (values[hashCode] != null) {
System.out.println("found after " + count + ": " + values[hashCode] + " same hashcode as " + o);
System.out.println(values[hashCode] == o);
System.exit(0); …
Run Code Online (Sandbox Code Playgroud) 我是 Java 新手,我想知道一个数组列表可以容纳多少个值。
我正在构建一个从数据库表中获取值的 android 项目(我正在使用 json 打印值并在 java 中调用文件),并将这些值记录在一个数组列表中。
如果我的表有 8000 条记录,arraylist 是否可以保存所有这些记录?
谢谢你。
我在java中的一个方法中使用以下代码:
int [] byte_song = new int[8414449];
int [] int_song = new int[8414449 - 45];
Run Code Online (Sandbox Code Playgroud)
如果我只是写:
int [] byte_song = new int[8414449];
Run Code Online (Sandbox Code Playgroud)
它没有给我任何错误.但是,如果我写:
int [] byte_song = new int[8414449];
int [] int_song = new int[8414449 - 45];
Run Code Online (Sandbox Code Playgroud)
它给了我OutOfMemoryError
.
System.gc();
在int []int_song = new int[8414449 - 45];
我得到错误之前我也尝试过调用.有人可以帮我解决这个问题.
java ×10
jvm ×5
heap-memory ×2
arraylist ×1
dictionary ×1
heap ×1
jar ×1
memory ×1
parameters ×1
performance ×1
weka ×1