Tag: 内存

无法将Java堆大小设置为大于1568

我正在运行具有以下属性的服务器: Windows Server 2008 R2标准版 – 64位4GB RAM 我正在尝试将应用程序的堆大小设置为3gb。 我正在使用标志-Xmx3G -Xms3G。 使用标志运行会导致以下错误: 初始化VM时发生错误无法为对象堆保留足够的空间无法创建Java虚拟机。 我一直在玩设置,看看我的天花板是什么,发现1568是我的天花板。 我错过了什么?

Java5 -XX:即使超过45%的堆是免费的,MaxHeapFreeRatio = 45也不会释放堆

我有一个带有以下参数的java应用程序,但即使总可用空间大于45%(通过可视VM可以看到),堆也不会被回收。 是否有任何理由让JVM无法释放堆空间? 相同的设置在Java6中按预期工作。 运行Java5运行时和编译时 java -jar -Xmx1024m -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=45 -XX:+HeapDumpOnOutOfMemoryError

当我有一个类的集合时,内存中存储了多少个静态final属性的副本

假设我有这个简单的类: public class Car { public static final int TYPE_SUV = 1; public static final int TYPE_TRUCK = 2; public String name; public int carType; } 现在,如果我有这些的集合,我知道我正在为集合中的每个元素分配一个String和一个int ,但我是否也多次存储静态int ? 这个设计的示例类代表了我在几年前写的那种Java之前我才知道像这样的幻想数字更好地服务于一个单独的类中定义的enum ,但我总是想知道这个代码的副作用是什么是。

为其他对象实现String.intern()的等效项

我正在尝试实现String.intern()的等价物,但对于其他objets。 我的目标如下:我有一个对象A,我将序列化然后反序列化。 如果在某处有另一个对A的引用,我希望反序列化的结果是相同的引用。 这是我期望的一个例子。 MyObject A = new MyObject(); A.data1 = 1; A.data2 = 2; byte[] serialized = serialize(A); A.data1 = 3; MyObject B = deserialize(serialized); // B!=A and B.data1=1, B.data2=2 MyObject C = B.intern(); // Here we should have C == A. Consequently C.data1=3 AND C.data2=2 这是我的实现atm。 ( MyObject类扩展了InternableObject ) public abstract class InternableObject […]

代码中的Android Memoryleak

我试图理解内存泄漏的概念。 我尝试了这个代码并尝试了一些我从相关post中找到的方法,但我无法解决问题。 需要帮助来了解此代码中发生内存泄漏的位置。 我的申请只有2项活动 //第一活动 package com.pace.mat; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MATDemoActivity extends Activity implements OnClickListener { private Dialog dialog1; private Button btnSubmit; private Context myClassContext; private ImageView RedImage,BlueImage,Yellow,Orange,Green; /** Called when the activity is first created. […]

Java中的字节默认情况下占用4个字节?

可能重复: 内存中字节的大小 – Java 我在一篇文章中读到了这个。 我只是按原样粘贴: 该类占用至少8个字节。 所以,如果你说**new Object();**你将在堆上分配8个字节。 每个数据成员占用4个字节,long和double除外,占用8个字节。 即使数据成员是一个字节,它仍然会占用4个字节! 此外,使用的内存量以8字节块增加。 因此,如果你有一个包含一个字节的类,它将占用该类8个字节,数据占8个字节,总共16个字节(呻吟!)。 它是真的Java字节分配/占用4个字节? 而空类需要8个字节? 这里也很混乱。

如何解决’java.lang.OutOfMemoryError:超出GC开销限制’

我阅读了关于解决此问题的堆栈溢出页面 ,并尝试添加命令行选项-XX:-UseGCOverheadLimit以及“-Xmx”参数。 但是,我的程序仍然抛出内存不足错误。 该程序将大量(> 40,000个键)的单词保存到MultiKeyMap中,并在具有足够内存的服务器上运行。 有关如何避免错误的任何建议?

java可以系统输出导致内存不足的问题

这是一个理论问题。 可以在java applet上大量出现系统,导致applet内存不足吗? 如果是,那么删除跨多个文件的多个sysout的简单解决方案是什么?

排除无限制的Java Resident Set Size(RSS)增长

我有一个独立的Java应用程序,它具有: -Xmx1024m -Xms1024m -XX:MaxPermSize=256m -XX:PermSize=256m 随着时间的推移它会占用越来越多的内存,开始交换(并减速)并最终死了很多次(不是OOM +转储,只是死了,没有/ var / log / messages)。 到目前为止我尝试了什么: 堆转储:活动对象从1G堆中取出200-300Mb – >确定堆 活动线程数相当不变(~60-70) – >确定线程堆栈 JMX在某些时候停止回答(mb它答案但是超时较低) 关闭交换 – 它死得更快 strace – 似乎一切都慢了下来,应用仍然没有死,并且不确定哪些东西看起来那里 检查顶部:VIRT增长到5.5Gb,RSS增长到3.7 Gb 检查vmstat(显然我们开始交换): ————————–procs ———–memory———- —swap– —–io—- –system– —–cpu—— Sun Jul 22 16:10:26 2012: rb swpd free buff cache si so bi bo in cs us sy id wa […]

使用Mule3.2在重载下GC过频

在Mule 3.2(100个线程同时发送请求)的重负载下,通过jprofiler,我可以看到创建了大量的对象实例(每秒大约500mb),并且占用了堆的年轻区域的90%以上的空间,这导致了jvm每2秒触发一次gc。 为什么? 这是正常的吗? 或者它是一个错误 jvm参数: -Xms = 2048m -Xmx = 2048m -Xmn = 768m -XX:PermSize = 256m -XX:MaxPermSize = 512m -Xss256k -XX:+ UseConcMarkSweepGC 谢谢