草庐IT

JVM_AllocateNewObject

全部标签

java - 强制 jvm 返回 native 内存

这个问题在这里已经有了答案:JVMsendingbackmemorytoOS[duplicate](3个回答)关闭4年前。我不时在需要大量内存的Eclipse任务中运行。因此,jvm在任务运行时会占用大约2-3gb的RAM,这没关系。但是一旦jvm占用了该内存,它就不会释放它,而且我遇到的情况是,堆中使用的内存约为200mb,总堆大小约为3gb,这确实是不需要的,因为其他程序都在缺乏内存。我尝试了Max/MinHeapFreeRatio参数来强制jvm减少未使用内存的消耗。那是我的eclipseconfig.ini文件:-startupplugins/org.eclipse.equin

java - 强制 jvm 返回 native 内存

这个问题在这里已经有了答案:JVMsendingbackmemorytoOS[duplicate](3个回答)关闭4年前。我不时在需要大量内存的Eclipse任务中运行。因此,jvm在任务运行时会占用大约2-3gb的RAM,这没关系。但是一旦jvm占用了该内存,它就不会释放它,而且我遇到的情况是,堆中使用的内存约为200mb,总堆大小约为3gb,这确实是不需要的,因为其他程序都在缺乏内存。我尝试了Max/MinHeapFreeRatio参数来强制jvm减少未使用内存的消耗。那是我的eclipseconfig.ini文件:-startupplugins/org.eclipse.equin

java - 是由 jvm 限制的 C 代码在 JNA(或 JNI)中分配的内存(参数 -Xmx 或架构 32/64)

也就是说,在C部分中请求5mb的malloc()是否会因以下原因而失败:jvm使用-Xmx32m运行,jvm堆已经是30mb与jvm在64位窗口中是32位有关 最佳答案 第一个问题的答案是“否”-Xmx指的是Java堆,任何native分配都是完全独立的。第二个项目的答案是"is"-native分配受到操作系统和/或硬件固有的一般进程分配限制。 关于java-是由jvm限制的C代码在JNA(或JNI)中分配的内存(参数-Xmx或架构32/64),我们在StackOverflow上找到一个

java - 是由 jvm 限制的 C 代码在 JNA(或 JNI)中分配的内存(参数 -Xmx 或架构 32/64)

也就是说,在C部分中请求5mb的malloc()是否会因以下原因而失败:jvm使用-Xmx32m运行,jvm堆已经是30mb与jvm在64位窗口中是32位有关 最佳答案 第一个问题的答案是“否”-Xmx指的是Java堆,任何native分配都是完全独立的。第二个项目的答案是"is"-native分配受到操作系统和/或硬件固有的一般进程分配限制。 关于java-是由jvm限制的C代码在JNA(或JNI)中分配的内存(参数-Xmx或架构32/64),我们在StackOverflow上找到一个

java - JVM 使用的堆比最大堆多很多

我们遇到了一个JVM的问题,它使用了比max-Xmx更多的东西。我们正在使用-Xmx2048,它目前正在使用17GB的操作系统内存。我意识到JVM可以使用超过最大堆的使用量,但我们的使用量要多15GB,这似乎很疯狂。顶部转储如下所示:PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND30477root20022.683g0.017t18536S0.729.127:43.44java-Xmx2048M-Xms1024M-XX:MaxPermSize=256M-XX:ReservedCodeCacheSize=128M....(注意它使用的是0.017TB

java - JVM 使用的堆比最大堆多很多

我们遇到了一个JVM的问题,它使用了比max-Xmx更多的东西。我们正在使用-Xmx2048,它目前正在使用17GB的操作系统内存。我意识到JVM可以使用超过最大堆的使用量,但我们的使用量要多15GB,这似乎很疯狂。顶部转储如下所示:PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND30477root20022.683g0.017t18536S0.729.127:43.44java-Xmx2048M-Xms1024M-XX:MaxPermSize=256M-XX:ReservedCodeCacheSize=128M....(注意它使用的是0.017TB

java - 在 JVM 上禁用本地 JMX 连接

我们正在编写一个将密码保存在内存中的java程序。不幸的是,用户可以轻松地使用jconsole或jmap来创建堆转储文件并打开它以查找密码。我认为jconsole使用本地套接字连接jvm。我想知道,即使对于本地用户,有什么方法可以禁用jmx吗?有没有办法完全禁用堆转储?由于用户可以访问内存段,因此无论如何都可以访问密码。但是,我想禁用执行此操作的标准方法,以使操作尽可能昂贵。 最佳答案 最后,我找到了禁用jconsole连接的解决方案。它还阻止jmap创建转储文件。我找到了解决方案here.我也在这里引用答案:Youcanpreve

java - 在 JVM 上禁用本地 JMX 连接

我们正在编写一个将密码保存在内存中的java程序。不幸的是,用户可以轻松地使用jconsole或jmap来创建堆转储文件并打开它以查找密码。我认为jconsole使用本地套接字连接jvm。我想知道,即使对于本地用户,有什么方法可以禁用jmx吗?有没有办法完全禁用堆转储?由于用户可以访问内存段,因此无论如何都可以访问密码。但是,我想禁用执行此操作的标准方法,以使操作尽可能昂贵。 最佳答案 最后,我找到了禁用jconsole连接的解决方案。它还阻止jmap创建转储文件。我找到了解决方案here.我也在这里引用答案:Youcanpreve

java - JVM 是否有最坏的情况实现?

Javamemorymodel明确了关于线程如何通过内存进行交互的可以假设和不可以假设的内容。例如,如果一个线程在没有适当同步的情况下将新值写入字段,则不能保证其他线程可以观察到新值。然而,在实践中,尽管同步不充分,其他线程仍可能读取新值,具体取决于写入和读取之间的时间、硬件架构等。这可能会导致难以发现且难以重现的错误。因此,在最坏情况下的JVM上运行Java应用程序可能很有用,该JVM绝对没有线程之间的内存同步,超出Javamemorymodel中的保证。.这种最坏情况的JVM实现是否存在? 最佳答案 您可以尝试使用Terraco

java - JVM 是否有最坏的情况实现?

Javamemorymodel明确了关于线程如何通过内存进行交互的可以假设和不可以假设的内容。例如,如果一个线程在没有适当同步的情况下将新值写入字段,则不能保证其他线程可以观察到新值。然而,在实践中,尽管同步不充分,其他线程仍可能读取新值,具体取决于写入和读取之间的时间、硬件架构等。这可能会导致难以发现且难以重现的错误。因此,在最坏情况下的JVM上运行Java应用程序可能很有用,该JVM绝对没有线程之间的内存同步,超出Javamemorymodel中的保证。.这种最坏情况的JVM实现是否存在? 最佳答案 您可以尝试使用Terraco