我有一个Java程序可以在Solaris 10 X86上运行,具有2GB物理内存和2GB交换。
该程序在64位Linux中运行良好,仅消耗约450MB内存。
然而,当它在Solaris中运行时,它总是报告OutOfMemoryError,我注意到在错误发生之前,它正试图使用
那么为什么JVM会尝试使用那么多虚拟内存呢?有没有办法告诉JVM不要使用那么多虚拟内存?
谢谢你。
编辑:
谢谢大家的意见!以下是完整的错误消息:
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (allocation.cpp:211), pid=1052, tid=16
#
# JRE version: 6.0_26-b03
# Java VM: Java HotSpot(TM) Server VM (20.1-b02 mixed mode solaris-x86 )
--------------- T H R E A D ---------------
Current thread (0x081a3400): JavaThread "C2 CompilerThread1" daemon
尝试设置jvm param-Xmx1g以限制最多1GB的使用。
您可能正在向JVM传递参数,使其使用如此多的内存。
根据具体的错误-是堆空间问题还是permgen空间问题将参数传递给jvm,例如-Xms512m和-Xmx512m,或-XX:PermSize=128m和-XX:MaxPermSize=128m,可能会解决系统上的问题。
我正在使用spring boot开发客户端应用程序。在运行spring boot应用程序(使用完全可执行的jar)时,x64服务器的内存占用约为190M,x86服务器的内存占用约为110M。 我的jvm选项是(-xmx64m-xms64m-xx:maxpermsize=64m-server),为什么在x64服务器中,内存占用这么大?如何将内存使用量降低到150M以下? 多谢了。
问题内容: 我想问你如何减少Spring框架的RAM占用量。 我创建了一个简单的helloworld应用来演示该问题。只有两个类和context.xml文件: -主要方法课 -用于模拟某些“工作”的类(无穷循环中的printig Hello) 仅包含以下内容: 测试类仅包含称为的方法,构造后会调用: 我准备了两种情况,在这两种情况下,方法仅包含一行。 在第一种情况下,主要方法是这样做的: App在
主要内容:虚拟内存如何工作?,按需分页,虚拟内存管理系统的快照虚拟内存是一种存储方案,为用户提供了一个拥有非常大的主内存的幻觉。 这是通过将辅助存储器的一部分作为主存储器来完成的。 在这种方案中,用户可以加载比可用主存更大的进程,因为存在内存可用于加载进程的错觉。 操作系统不是在主内存中加载一个大进程,而是在主内存中加载多个进程的不同部分。 通过这样做,多程序的程度将会增加,因此CPU利用率也会增加。 虚拟内存如何工作? 在现代语言中,虚拟内存近来变得非常普
问题内容: 我正在以下Java版本上运行单线程Java应用程序: 启用该选项。仍然在启动应用程序时,使用监视系统时看到多个线程正在启动。我想尽可能减少启动的进程数,因为我有一个用例,其中涉及运行该应用程序的多个实例,这将达到我正在运行的系统上允许的最大进程数的顶峰。上。除了可以用来减少启动线程数之外,是否还有其他jvm选项? 问题答案: 除了禁用并行或并发GC外,还有以下选项可减少JVM线程数
处理器的虚拟内存子系统为每个进程实现了虚拟地址空间。这让每个进程认为它在系统中是独立的。虚拟内存的优点列表别的地方描述的非常详细,所以这里就不重复了。本节集中在虚拟内存的实际的实现细节,和相关的成本。 虚拟地址空间是由CPU的内存管理单元(MMU)实现的。OS必须填充页表数据结构,但大多数CPU自己做了剩下的工作。这事实上是一个相当复杂的机制;最好的理解它的方法是引入数据结构来描述虚拟地址空间。
本文向大家介绍详解如何减少python内存的消耗,包括了详解如何减少python内存的消耗的使用技巧和注意事项,需要的朋友参考一下 Python 打算删除大量涉及像C和C++语言那样的复杂内存管理。当对象离开范围,就会被自动垃圾收集器回收。然而,对于由 Python 开发的大型且长期运行的系统来说,内存管理是不容小觑的事情。 在这篇博客中,我将会分享关于减少 Python 内存消耗的方法和分析导致