【java – Windows上的内存使用量不断增长】教程文章相关的互联网学习教程文章

java-使用Poi SXSSFWorkbook向Excel添加注释时使用了过多的内存【代码】

我的应用程序创建了一个电子表格,该电子表格可能很大(最多500,000行,每行分布在六张纸上,每行约20列). 我使用Apache Poi,然后转而使用SXSSFWorkBook来将数据写入临时文件,以使所使用的内存与最终电子表格的大小不成比例,并且效果很好. 但是电子表格表示元数据已更改,并且当元数据已更改时,我想在显示旧值的单元格中添加注释.我可以在小型电子表格中使用它,但是在尝试大型文件时,它总是会因堆内存错误而失败. 我不确定问题是由于Poi...

java-从链接列表末尾删除Kth节点的内存有效方法【代码】

这是几个已知解决方案的一个已知问题,但是我目前的努力是尝试考虑内存使用情况(而不是时间复杂性),找到解决问题的最有效方法. 问题:给定一个未知大小(但可能很大)的单链接列表,请从列表末尾删除第K个成员. 0< = K< N.如果K为0,则删除列表的最后一个节点.如果K = N-1,则删除列表中的第一个节点.我最初的方法是递归-它是最简单的编写方法,其时间复杂度为O(N)-遍历列表两次,最后又一次返回. public int removeKLast(Node<T> node, in...

java-Spark(Kafka)流内存问题【代码】

我正在测试处理来自Kafka的消息的第一个Spark Streaming流水线.但是,经过几次测试运行后,我收到以下错误消息没有足够的内存,Java运行时环境无法继续. 我的测试数据确实很小,因此应该不会发生.在研究了该过程之后,我意识到以前提交的Spark作业可能没有被完全删除? 我通常会提交以下工作,而我正在使用Spark 2.2.1/usr/local/spark / bin / spark-submit –packages org.apache.spark:spark-streaming-kafka-0-8_2.11:2.0.2?/ scr...

关于Java如何在新的内存模型中实现volatile的困惑(JSR 133)【代码】

在JSR 133 Java Memory Model FAQ中,它指出the new memory model places stricter constraints on reordering ofvolatile field accesses with other field accesses, volatile or not,anything that was visible to thread A when it writes to volatile fieldf becomes visible to thread B when it reads f它还提供了如何使用易失性字段的示例class VolatileExample {int x = 0;volatile boolean v = false;public void writer(...

为什么运行Java应用程序的计算机几乎耗尽了物理内存,但仍然可以运行数周

我有一个Java应用程序,该应用程序部署在两台计算机上,并根据指标(包括JMC)判断它们都几乎耗尽了内存,并且持续了很长时间.但是,这些应用程序可以正常运行,并且不会发生OutOfMemory错误. 这很混乱.您能解释为什么应用仍然没有OutOfMemory错误运行吗?为什么在内存接近极限之前没有释放内存? PS这里是堆指标 解决方法:这就是Java的内存管理的工作方式-基本上将垃圾回收延迟到必要时才开始,以希望应用程序在需要GC之前退出. 因此,它通...

java-JVM堆外内存地址是否可能更改?【代码】

我们有一个平台严重依赖JVM中的堆外内存.我们注意到,在GC周期中,我们有时会得到SIGSEGV:V [libjvm.so+0x5c56cf] G1ParScanThreadState::copy_to_survivor_space(InCSetState, oopDesc*, markOopDesc*)+0x4bf我完全理解,很难找到答案,但是我们已经开始缩小根源范围. 问题: 如果我做:base = unsafe.allocateMemory(capacity);显然,保留以后的释放基础,GC可以(以任何方式)介入并选择移动我的本机内存吗? 我知道GC应该不会对这种...

如何在我的Java应用程序中查找内存泄漏【代码】

这是我先前的问题HERE的后续问题.我目睹Java应用程序中的内存泄漏.最初,我以为泄漏来自应用程序的服务器组件.但是按照其他人的建议,事实并非如此. 我使用了一个工具来转储堆内存并使用JProfiler对其进行可视化.显然这是由于我怀疑有HashMaps.但是我不确定,因为我不熟悉如何解释转储.这是我的应用程序结构的简短摘要(它每15分钟缓存一些文本数据以快速检索服务器线程). 是什么引起泄漏问题?以及如何从下面的转储中识别它?显然我做...

java-JHAT无法分析内存转储【代码】

我有一个内存转储文件,JHAT提供以下消息,但我无法分析任何内容(因为未显示任何数据.Resolving 0 objects...WARNING: hprof file does not include java.lang.Class!WARNING: hprof file does not include java.lang.String!WARNING: hprof file does not include java.lang.ClassLoader!这是否意味着hprof文件不完整或损坏? 我在用-XX:HeapDumpOnOutOfMemoryError”我的tomcat中的选项.解决方法:我只是通过自己的堆转储遇到了...

Java内存模型(JMM)详解【图】

在Java JVM系列文章中有朋友问为什么要JVM,Java虚拟机不是已经帮我们处理好了么?同样,学习Java内存模型也有同样的问题,为什么要学习Java内存模型。它们的答案是一致的:能够让我们更好的理解底层原理,写出更高效的代码。 就Java内存模型而言,它是深入了解Java并发编程的先决条件。对于后续多线程中的线程安全、同步异步处理等更是大有裨益。 硬件内存架构 在学习Java内存模型之前,先了解一下计算机硬件内存模型。我们多知道...

java内存,大端小端判断【代码】

一,简介 在计算机系统中,规定:每个地址单元都会对应一个字节(8个bit),但是,在c语言中, 除了有一个字节(8个bit)的char,也有两个字节(16个bit)的short, 也有四个字节(32个bit)的long(在不同的编译器下可能不同)。对于16位或者32位的处理器, 即就是大于8位的处理器,由于寄存器的宽度大于一个字节, 那么就存在如何将一个多字节的变量的数据如何存放的问题——所以,就有了大小端之分。 大端模式:是指数据的高字节...

Java堆空间Vs栈内存【代码】【图】

之前我写了几篇有关Java垃圾收集的文章之后,我收到了很多电子邮件,请求解释Java堆空间,Java栈内存,Java中的内存分配以及它们之间的区别。您可能在Java,Java EE书籍和教程中看到很多有关堆和变量内存的参考,但是几乎没有就程序而言完全解释堆和栈的内存分配的。 Java堆空间 Java运行时使用Java堆空间为对象和JRE类分配内存。每当我们创建任何对象时,它总是在堆空间中创建。 垃圾回收在堆内存上运行以释放没有任何引用的对象使...

Java优先级队列实现-内存位置【代码】

我正在尝试在Java中实现高效的优先级队列.我已经很好地实现了二进制堆,但是它没有理想的缓存性能.为此,我开始研究二进制堆中的Van Emde Boas布局,从而使我得到了二进制堆的“阻塞”版本,其中的诀窍是计运算符索引和父索引. 尽管我能够做到这一点,但缓存行为(和运行时间)变得更糟.我认为问题是:由于是Java,因此可能无法实现引用的局部性-我不确定使用对象数组是否实际上会使对象在Java内存中是连续的,请问有人可以确认吗? 我也非常...

java-JVM:不成功的内存分配失败后继续吗?

我有一个使用库执行时间和内存消耗步骤的过程,该步骤有时会占用过多的内存并在大型请求上引发分配失败.在这种情况下,接受故障并继续处理是合理的,因此我的解决方案是使对该工具的引用为空,并创建一个新工具,以便在后续输入时继续处理. 我们小组中的其他人对此策略表示反对,认为一旦JVM中的内存变得如此紧张以至于分配失败,JVM就会处于可疑状态:没有真正的证据,只有FUD.另一方面,我只能用归纳法论证我还没有见过不良影响(我还没有见...

java-如何创建内存中的JarFile?【代码】

我试图写一个像这样的函数:public Map<String, Document> getTestXml(JarFile jarFile) {Map<String, Document> result = Maps.newHashMap();Enumeration<JarEntry> jarEntries = jarFile.getEntries();while (jarEntries.hasMoreElements()) {JarEntry jarEntry = jarEntries.nextElement();String name = jarEntry.getName();if (name.endsWith(".class") && !name.contains("$")) {String testClassName = name.replace(".clas...

Java内存压力

Java中是否有功能可以告诉运行时有关非托管内存分配的信息,例如GC.AddMemoryPressure method in .NET?解决方法:我想这在Java中不是必需的.在Java中根本不会发生“如果一个小的托管对象分配了大量的非托管内存”,如果您通过JNI调用本机(非托管)函数,则该内存不会分配给JVM的托管内存表. 以供参考: > Java memory Management for JNI