草庐IT

memory-leaks

全部标签

Java 分配内存泄漏

我必须假设以下方法不会泄漏内存:publicfinalvoidsetData(finalIntegerp_iData){data=p_iData;}其中data是某个类的属性。每次调用该方法时,新整数都会替换当前存在的数据引用。那么当前/旧数据发生了什么?Java必须在底层做一些事情;否则,每次分配一个对象时,我们都必须清空所有对象。 最佳答案 简单的解释:垃圾收集器会定期查看系统中的所有对象,并查看哪些对象无法再从Activity引用中访问。它释放任何不再可达的对象。请注意,您的方法根本不会创建一个新的Integer对象。例如,可

java - SoftReferences 与 Weakreferences/OutOfMemoryError

我在处理软引用和弱引用时遇到了问题。代码有一个可以切换的标志软引用和弱引用之间的所有逻辑。虽然引用很弱,但似乎为了工作正常,使用软引用我一直得到OutOfMemoryError。这种情况发生在MacOSX上的JDK7和JDK6以及Debian上的IcedTea6上。然而,带有G1收集器的JDK7是我发现使用软引用的设置,我尝试的其他所有内容(串行/并行GC、-client/-server等)都失败了异常。代码有点大,但我已尝试在保留问题的同时尽可能缩小范围。我在上面留下了大量评论,更详细地描述了如何重现问题。/***Leakling.java***Issue:***Thiscodeth

java - 外部洗牌 : shuffling large amount of data out of memory

我正在寻找一种方法来随机播放不适合内存(大约40GB)的大量数据。我有大约3000万个条目,长度可变,存储在一个大文件中。我知道该文件中每个条目的开始和结束位置。我需要随机播放这些不适合RAM的数据。我想到的唯一解决方案是将包含从1到N的数字的数组打乱,其中N是条目数,与Fisher-Yatesalgorithm然后根据此顺序将条目复制到新文件中。不幸的是,此解决方案涉及大量查找操作,因此会非常慢。是否有更好的解决方案来对均匀分布的大量数据进行洗牌? 最佳答案 首先解决shuffle问题。为此,请为您的条目发明一种哈希算法,该算法会

java - 静态变量、Tomcat 和内存泄漏

我正在调试我在Tomcat应用程序中遇到多年的问题-由于无法对Webapp类加载器进行GC,因此在重新启动应用程序时导致内存泄漏。我用JProfiler拍摄了堆的快照,看起来至少我的一些静态变量没有被释放。某些类有一个静态最终成员,它在类首次加载时被初始化,因为它是最终的,所以我不能在应用程序关闭时将它设置为null。静态最终变量是Tomcat中的反模式,还是我遗漏了什么?我刚刚开始研究JProfiler8,所以我可能会误解传入的引用资料告诉我的内容。干杯!卢克 最佳答案 这是几年前的,但是这个presentation我在JavaO

java.lang.out of memory 错误

我们是cbse12年级的ip学生..我们正面临这个异常,我们不知道如何纠正这个异常。run:Exceptioninthread"ImageFetcher1"java.lang.OutOfMemoryError:Javaheapspaceatjava.awt.image.DataBufferInt.(DataBufferInt.java:41)atjava.awt.image.Raster.createPackedRaster(Raster.java:458)atjava.awt.image.DirectColorModel.createCompatibleWritableRaster(

java - 为什么在Java中不实现equals方法会导致内存泄漏

我试图了解内存泄漏的各种原因,这是我看到的示例之一,其中实现了hashCode()而不是equals()。我已经通读了其中一个,如果一个被过度骑乘,另一个也必须因违反契约(Contract)而被过度骑乘。这是示例代码importjava.util.HashMap;importjava.util.Map;publicclassMemoryLeak{staticclassKey{Integerid;Key(Integerid){this.id=id;}@OverridepublicinthashCode(){returnid.hashCode();}}publicstaticvoidmai

java - 如何分析 .hprof 文件中的堆数据并使用它来减少内存泄漏?

最近,我在运行应用程序时遇到了java.lang.OutOfMemoryError异常。在一个这样的实例中,我能够使用jvisualvm获取堆转储。我可以使用NetBeans8.1IDE打开从堆转储中获取的.hprof堆转储文件,但我不知道如何分析数据转储。我想知道如何读取转储文件并采取纠正措施以从应用程序的角度减少内存不足异常。 最佳答案 有很多方法可以找到内存泄漏的根本原因,例如使用JProfiler等分析器并简单地应用thisgreatvideo中描述的内容.您还可以查看EclipseMemoryAnalyzer也称为MAT它

java - 数学与 J/链接 : Memory Constraints?

我正在使用Mathematica及其J/LinkJava接口(interface)进行计算密集型基准测试。如果达到大约320MB的内存占用量,基准测试就会停止,因为这似乎是极限,垃圾收集器需要越来越多的时间并最终会失败。Mathematica函数ReinstallJava采用参数命令行。我试着做ReinstallJava[CommandLine->"java-Xmx2000m..."]但是Mathematica似乎完全忽略了-Xmx选项。如何为我的java程序设置-Xmx内存选项?320MB的限制从何而来?任何帮助将不胜感激。 最佳答案

java - JDK 类中 java.lang.ref.WeakReference 对象的内存泄漏

下面的简单代码再现了java.lang.ref.WeakReference对象在堆中的增长:publicstaticvoidmain(String[]args)throwsException{while(true){java.util.logging.Logger.getAnonymousLogger();Thread.sleep(1);}}这是jmap命令在几秒内的输出:user@t1007:~>jmap-d64-histo:live29201|grepWeakReference8:224931079664java.lang.ref.WeakReference31:132144[Lj

java - JUnit + Derby + Spring : drop in-memory db after every test

在我的单元测试中,我Autowiring了一些使用URL的数据源jdbc:derby:memory:mydb;create=true创建内存数据库。要删除内存中的Derby数据库,您必须连接:jdbc:derby:memory:mydb;drop=true我希望在每次测试后都发生这种情况,并从一个新的数据库开始。我如何使用Spring执行此操作? 最佳答案 HowtoshutdownDerbyin-memorydatabaseProperly给了我一个解决方案的提示:mydb.drop.url=jdbc:derby:memory:m