首页 > TAG信息列表 > garbage-collection

java-JSP完成执行后会发生什么?

当JSP完成执行时,是否会将JSP页面中声明的所有变量用于垃圾回收?如果我在JSP中声明了许多内存密集型Hashtable,并且让JSP完成了执行而没有事先将变量设置为null,那么即使在JSP执行完之后,对象仍会保留在内存中吗? (我没有将它们存储在持久变量中,例如会话.仅存储在局部变量中.)解决方

我只需要关心它的流,就必须存储一个TcpClient吗?

TcpClient的新实例连接到远程主机.检索并存储其NetworkStream.我是否还必须存储TcpClient本身,以确保它不会被垃圾收集? 万一您要回答“您必须存储它才能处置它”: 在我的特定情况下,TcpClient通常寿命很长(应用程序生命周期),因此处置它并不是必须的.但是,我同意,通常必须将其存储起

java-RMI问题:服务器关闭后,对象引用会发生什么?

有人可以帮忙吗? 问:应用程序服务器通过调用Naming.rebind()在RMI注册表中注册对象.一段时间后,服务器应用程序关闭.解释在注册表中注册的对象引用将发生什么情况. 答:我认为该引用在注册表中保留了一段时间,但是在该时间段(“租赁期”?)之后,本地垃圾收集器可以删除该引用. 我不知道“

java-如何让PSOldGen扩展以容纳非常大的对象?

我有一个程序需要为一个非常大的对象分配堆空间,但是当发现空闲的堆似乎比该大对象所需的要多得多时,我发现出现OutOfMemoryExceptions. 此测试程序演示了该问题: public class HeapTest { public static void main(String[] args) { final int size = Integer.parseInt(args

java-数据报包上的ByteBuffer与缓冲区

我已经读过ByteBuffer(java.nio)应该在Buffer类上使用以读取数据,这仅仅是因为它更有效(?).我的问题围绕一个UDP客户端进行,该客户端从多播地址读取数据包并将其处理为原始对象.从DatagramSocket解析这些数据包的最有效/最快方法是什么?现在,我有一个数据报包,它的字节数组环绕着Byte

内存未释放-PyQt4

可能是绑定(SIP)甚至是python,但是Qt(pyqt4)出现了问题. 我有一个QTabWidget,在其中放了一个可以关闭的小部件. 我有一个小部件,可以分配大约400mb的内存.我尚未设置父级,并且我在关闭时调用deleteLater(),但没有任何反应.即使调用python的gc也不起作用: import gc gc.collect()

c#-在.NET集合中剔除WeakReferences的最佳时间

我有一个收藏夹(我正在写Weak Dictionary),并且需要定期剔除已死的WeakReferences.我通常看到的是在“添加”和“删除”方法中进行检查,并说:“对集合进行X修改后,就该淘汰了.”这对于我来说是可以接受的,但是似乎应该有一个更好的方法. 我真的很想知道GC何时运行并在之后立即运行我

使用WeakReference的Java示例的线程安全

在阅读了SO文章后,我正在阅读Java中的弱引用,并意识到我并不真正知道它们是什么. 以下代码摘自Arnold,Gosling和Holmes撰写的“ Java编程语言,第四版”中的第457页第17章:“垃圾回收和内存” import java.lang.ref.*; import java.io.File; class DataHandler { private File

是否可以使一个对象的生命周期依赖于另一个对象,而无需在C#中进行强耦合?

我有一些符合以下要求的工厂代码: public MyHandlingClass Create() { var myHandler = new MyHandlingClass(); var myNotifier = new MyNotifyingClass(); myNotifier.Notify += myHandler.HandleNotification; return myHandler; } 这个想法是允许MyHandlingClass对

Windows和Linux上的内存页写检测

我目前正在从事代垃圾收集器的工作.这意味着仅遍历最新的对象,尚存的对象(=从已知根可访问)被提升到较早的一代.当对象指向相同或较早几​​代的其他对象时,此方法正常.但是,当较旧的对象指向较新的对象,并且由于仅遍历较新的对象时,指向的对象将被错误地收集.为避免这种情况,将在

javascript-开发移动Web应用程序时测量内存使用情况

我正在使用JQuery Mobile,JQuery,Javascript编写移动Web应用程序.这是我第一次编写移动Web应用程序,因此我正在尝试.我希望编写的程序能够在后台连续运行,所以我不能依赖垃圾收集器,并且担心移动设备上的内存使用情况.在完成对变量和函数的“空”和“删除”操作时,我非常小心,但我

java-Android-如何在按下HOME时取消所有活动?

我有一个包含多个活动的应用程序. 目前,整个应用程序包含约8个活动.首先,我显示一个启动屏幕几秒钟,其中所有首选项都已加载并设置(来自sharedPreferences)-这些都保存在我为此创建的“ Setting”类中-该类基本上只有一堆静态变量,因此应用中的所有活动都可以阅读并根据需要进行修

Python的垃圾回收能否在所有情况下都保证回收循环引用的对象?

这个问题是我先前提出的问题的扩展:Python Delegate Pattern – How to avoid circular reference?阅读答复后,我决定澄清我的问题,但要求将其单独发布. 开始: > Python文档中的一段(如下所示)指出,不能保证对循环进行垃圾回收 引用的对象.我发现here的帖子暗示了同样的事情.但是,对

java-传递参考var和GC

这个问题已经在这里有了答案:            >            Is Java “pass-by-reference” or “pass-by-value”?                                    80个如果我们将引用变量传递给method并修改了对象的状态,则这些修

java-GC暂停并杀死-STOP会产生相同的行为吗?

我在现场看到Java客户端应用程序崩溃,我认为这是因为所连接的服务器经历了12秒钟的完整GC暂停.但是,当我尝试在Eclipse之外本地运行客户端/服务器并使用kill -STOP和kill -CONT在服务器上模拟GC暂停来重现该行为时,我无法使客户端应用程序崩溃-它只会旋转直到我杀死-CONT. 我想弄清

C#-Shared.CellItem’没有实现接口成员’System.IDisposable.Dispose()

我是C#的新手,我正在处理内存占用大量对象的对象,因为我已经执行了内存分析,并且需要处理一些资源并为GC调用finalize方法.但是IDisposable无法实现我的类,这是为什么?我应该如何在班上实施IDispose? public class CellItem: IDisposable { public int Medicat

Java-JVM-CPU使用率达到100%

我有一个Java程序,该程序有时会同时变成100%CPU使用率和睡眠状态.该程序不是多线程的. 环顾四周,我认为最可能的原因是我对垃圾收集运行Java解释器的方式中的错误或某些不匹配.我只能认为100%的CPU使用率是因为GC.我为程序使用Xmx分配了足够的内存,并且该程序甚至在我分配的数量附近

基于try / finally yield的Python析构函数?

我一直在测试受此http://docs.python.org/2/library/contextlib.html启发的肮脏黑客.主要思想是将try / final思想带到类级别,并获得可靠且简单的类析构函数. class Foo(): def __init__(self): self.__res_mgr__ = self.__acquire_resources__() self.__res_mgr__.next

为什么Java ThreadPoolExecutor覆盖finalize()

我想知道为什么在终止所有线程之后,仅当GC调用finalize方法时,ThreadPoolExecutor finalize()方法才会调用其shutdown()方法的原因.那么,为什么ThreadPoolExecutor会完全覆盖finalize()? ThreadPoolExecutor.finalize()调用shutdown()对我(以及我的项目的线程泄漏源)似乎具有误导性,

C#-使用硬盘驱动器扩展大型数组

由于科学原因,我正在解决9个男子的莫里斯游戏.我正在尝试保存有关游戏状态子集的信息.不幸的是我达到了记忆极限. 我的阵列非常少.当新元素出现时,我需要扩展这些数组.我有足够的内存来存储这些数组,但是我无法在原始数组仍在内存中的情况下创建扩展数组. 我考虑过将原始数组保存到

java-为什么等待太长时间才能从年轻一代中提升对象会导致效率降低?

为什么等待太久才能从年轻一代中提拔物体会导致效率低下? 我看到的一种解释是,如果您等待太长时间来提升年轻一代,那么它将变得稀疏(即,现场演出的规模将变大,占年轻一代总人数的百分比). 但是,这如何导致效率降低?假设当年轻的世代稀疏时(例如,活动集是其大小的2%),收集它将花费X CPU

c#-如果在加载引用和对其调用函数之间的线程之间更改了易失性引用,可以对旧对象进行垃圾回收吗?

我有两个线程执行以下代码: static volatile Something foo; void update() { newFoo = new Something(); foo = newFoo; } void invoke() { foo.Bar(); } 线程A执行更新,线程B执行调用.这两个线程的时间安排如下:invoke加载foo的地址,update覆盖foo,然后在调用Bar之

Java 8元空间-避免减少

由于Java 8中的Metaspace,我有一个简短的问题.我知道我可以使用-XX:MetaspaceSize-参数设置初始大小.但是我想知道是否可以配置该值为最小大小. 我的目标是防止由于Metaspace大小而导致Full GC.对于我的应用程序,通常512 MB的Metaspace应该足够了,但是此值在运行时可能会有所不同.如

android-如何知道更新的可用堆大小?

在删除一些大对象之后,我很难获得更新的应用程序可用堆大小. 我的要求是,一旦用户达到特定级别的堆大小,就释放内存.例如我正在使用三星Tab3,它的应用程序堆大小为64 Mb. 应用程序在查看图像时不应耗尽内存,因此我限制了55 MB作为堆大小增长的最大限制.我正在查看图像之前检查可用

java-使用流关闭套接字

我的以下问题非常简单. 这是我的代码: public class Protocol implements Runnable { private SSLSocket socket = null; private InputStream is = null; private OutputStream os = null; ... public Protocol(Socket s) { socket = (SSLSocket)s