我一直认为,在启动JVM的过程中,装入类会填满JVM的permsize内存。可能在运行时也会使用JNI之类的东西?但一般来说,它不应该在运行时“显著”增长。
现在我注意到,因为我加载了很多数据(20 of )到堆空间中,最大值是32 of ( ArrayLists Of data ),然后我得到了一个'OutOfMemoryError: PermGen space‘。
有没有什么关联或者只是偶然的?
我知道怎么增加卷发的大小。这不是问题所在。
我们在高峰时间有严重的应用程序问题,应用程序变得非常慢,当我检查AppDynamics矩阵时,我的堆内存已经满了,GC每分钟都会启动,这使得它非常慢。下面是我的java (tomcat)的配置
OS version is Redhat 5 Linux
java version "1.6.0_05" 64Bit
Java选项是-Djava.awt.headless=true -Xmx2048m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+DisableExpl
在我的MPI程序中出现JVM内存分配崩溃之后,我试图了解内存管理是如何工作的。为了做到这一点,我添加了在下面可以看到的线条。
public static void main(String[] args) throws MPIException {
System.out.println("memory upon initialisation: " + (Runtime.getRuntime().totalMemory() >> 20) + "MB");
//run some with some loops and a lot of va
因此,我使用Java进行多路外部合并,对以行分隔的元组的磁盘上的大型文件进行合并。将批次元组读入TreeSet中,然后将其转储到磁盘上排序的批中。一旦所有数据都用完了,这些批就会合并到输出中。
目前,我正在使用神奇的数字,以计算出多少元组,我们可以适应内存。这是基于一个静态数字,该数字指示了如何使元组大致适合每MB的堆空间,以及有多少堆空间可用使用:
long max = Runtime.getRuntime().maxMemory();
long used = Runtime.getRuntime().totalMemory();
long free = Runtime.getRuntime
我有一个网络刮取应用程序,收集数据并将其存储在数据库中。它通常运行正常,但每天有几次会出现这样的间歇性错误:
OperationalError: (OperationalError) server closed the connection unexpectedly
This probably means the server terminated abnormally before or while processing the
request. could not send startup packet: Broken pipe
我相信这是因为下面的一批代码(发生错误的地方)处理了大量的数
带有Microsoft SQL Server 2005的Java spring - 9.00.4035.00 (X64) Nov 24 2008 16:17:31版权所有(c) Windows NT 5.2 (Build 3790: Service Pack 2)上的1988-2005 Microsoft Corporation Standard Edition (64位)
我正在使用一个事务管理器,如下所示,它通常工作得很好
<tx:advice id="TxAdvice" transaction-manager="TransactionManager