强制显式删除 Java 对象

2024-01-02

我正在开发一个处理大量非常密集流量的 Java 服务器。服务器接受来自客户端的数据包(通常为数兆字节)并将它们转发给其他客户端。服务器从不显式存储任何传入/传出数据包。然而服务器不断遇到OutOfMemoryException例外情况。

I added System.gc()进入服务器的消息传递组件,希望内存能够被释放。此外,我将 JVM 的堆大小设置为 GB。我仍然遇到同样多的例外情况。

所以我的问题是:如何确保兆字节消息不会无限期地排队(尽管不需要)?有没有办法让我对这些对象调用“删除”以保证它们不使用我的堆空间?

        try
        {
           while (true)
            {
               int r = generator.nextInt(100);//generate a random number between 0 and 100
                Object o =readFromServer.readObject();
                sum++;
                // if the random number is larger than the drop rate, send the object to client, else
                //it will be dropped
                if (r > dropRate)
                {
                    writeToClient.writeObject(o);
                    writeToClient.flush();
                    numOfSend++;
                    System.out.printf("No. %d send\n",sum);
                }//if

            }//while
        }//try

对象流保存对从中写入/读取的每个对象的引用。这是因为序列化协议允许向后引用流中较早出现的对象。您也许仍然可以使用此设计,但使用 writeUnshared/readUnshared 而不是 writeObject/readObject。我认为(但不确定)这将阻止流保留对该对象的引用。

正如考恩所说,reset()方法也在这里发挥作用。最安全的做法可能是使用writeUnshared紧接着reset()当写信给你的时候ObjectOutputStreams

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制显式删除 Java 对象 的相关文章

  • 从我们的 Java 程序执行 Java 程序

    I used Runtime getRuntime exec 但它抛出了IOException如下 java io IOException CreateProcess c error 5 at java lang Win32Process
  • FOP apache - 支持希伯来字母

    过去几天我一直在调查 FOP apache 中对希伯来字母的支持 用于生成 PDF 文件的项目 我看到以前有一个问题 我不太明白是否解决了 如果有支持 有人可以向我展示 重定向到简单的示例 为我提供带有希伯来字母的 XSL FO 文件 当使
  • Mockito:使用“thenReturn”中的方法返回模拟不起作用

    我遇到了我认为可能是 Mockito 的错误 但想知道是否有其他人可以解释为什么这个测试不起作用 基本上 我有两个对象 如下所示 public class FirstObject private SecondObject secondObj
  • spring依赖注入会创建单例对象吗?

    spring内部是如何管理这些对象的呢 单例对象什么时候创建和销毁 默认情况下 Spring bean 基本上是单例的 Spring 将为每个类创建一个实例 并且通常会在 Spring 初始化时执行此操作 然而 这几乎是无限可定制的 Spr
  • Java 1.6 和 Desktop.open() 的问题

    我一直在使用 Destop open 在 Windows 计算机 Vista 和 XP 上启动 pdf 查看器 并且大多数都工作得很好 但是 在一台 XP 计算机上 该调用不起作用 只是返回而不抛出任何异常 并且查看器不会启动 据我所知 在
  • 如何将背景图像设置到 JPanel 中的 JTextArea

    我想在JTextArea 我在谷歌上查找过 但没有结果 背景可能是一个标志 我也想知道如何设置背景的分辨率 我的包中只有一门课 我有一个 MySQL 连接器驱动程序作为参考库 我的工作台是 Eclipse 使用 Fat jar 插件导出 j
  • 从枚举返回计算值

    我的问题有两个而且很简单 按原样误解枚举 这个想法在我的代码中缺少一些重要的抽象 代码示例 其中oprt calc x y 无法编译 有警告cannot find symbol public enum Operation PLUS publ
  • Scala - InvalidClassException:没有有效的构造函数

    我创建了一个Serializable番石榴的版本ImmutableRangeMap and Builder在 Scala 中以便在我的 Spark 应用程序中使用 我的构造函数中有一个零参数SerializableImmutableRang
  • 信用卡号应该存储为字符串还是整数?

    是啊 只是想想而已 我应该将在我的网站上输入的信用卡号存储为字符串还是整数 我的意思是 它们由数字组成 这让我认为它是一个整数 但我不对它们进行数学运算 所以也许字符串更合适 编辑 所以我必须在加密之前存储在某个时刻输入的数字 我可能应该更
  • Android 上为什么会出现线程泄漏?

    我在 Android 应用程序中注意到 每次退出主屏幕时 堆大小 泄漏 都会增加 ByteArrayOutputStream 的量 我能做到的最好的办法就是添加 this mByteArrayOutputStream null 在 的最后r
  • 将 person.city.name 添加到 TableView

    我有一个 TableView 和一些 POJO 并且想要将其中一个属性绑定到 TableView 然而 该属性也是一个 POJO 并且应该有一个属性显示在 TableView 中 这是我的代码
  • Web 服务器上的身份验证和授权 ?

    我正在构建一个 Android 应用程序 它与 apache tomcat 上的 Web 服务器进行通信 Web 服务器采用 JAVA EE 构建 目前 为了进行身份验证和授权 我使用用户名 密码 为了管理会话 我使用令牌 因此 当用户登录
  • org.openqa.selenium.remote.service.DriverService$Builder.createArgs()Lcom/google/common/collect/ImmutableList;使用 Selenium 3.5.3

    我正在使用 IntelliJ 编写 Selenium Junit 测试 如果我直接从测试触发 测试运行正常 但是 如果我使用 JunitCore 触发 TestRunnerSuite 的测试 我遇到了以下奇怪的错误 在谷歌研究后我没有找到解
  • 如何安装“Android 支持库”以将 Gluon Mobile 应用程序部署到 Android?

    我想使用 Gluon Mobile 框架开发一个 Android 应用程序 我在 Netbeans IDE 中安装了 Gluon 插件 创建了一个示例项目并成功构建了它 现在我想将该应用程序部署到 Android 设备 我指的是在线文档 1
  • 远程数据库的“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障”

    我尝试连接到远程 MySQL 数据库 但失败并收到此错误 com mysql jdbc exceptions jdbc4 CommunicationsException Communications link failure 困惑的是 当我
  • NoClassDefFound错误:org/apache/tools/ant/util/ReaderInputStream

    我在 Intellij 中有一个带有 gradle 的 java 项目 它直到几个小时前才工作 但在进行微小更改 或者我认为是这样 后突然出现错误 Error gradle resources test analyzer main java
  • 如何用java实现FTP?

    我正在使用 FTP 我必须在客户端将消息嵌入到图像文件中 并且我必须将其发送到服务器 在服务器端我必须检索图像文件并然后我将检索该消息 我已经完成了嵌入消息并使用密码学和隐写术技术检索消息 我正在寻找如何将该文件从客户端传输到服务器 我必须
  • 我可以为每个片段单独提供工具栏吗?如何处理导航抽屉

    在我的应用程序中 某些页面的工具栏中有自定义视图 有些片段具有透明工具栏 有些片段具有坐标布局滚动 因此 我决定为每个片段单独设置工具栏 我想知道这是否是一个好的做法 如果有人已经这样做了 请分享代码或示例 您可以在片段中使用自定义工具栏
  • 如何更改 Java 中不同类的变量?

    如何更改 Java 中不同类的变量 我正在尝试更改另一个类中的变量 然后在第一个类中使用它 我在 First 类中创建了一个变量 并将其值设置为 1 然后我尝试在 Second 类中将同一变量的值更改为 2 但是当我在 First 类中使用
  • JDK1.6 中 ManagementFactory 的托管 Mbean - NotCompliantMBeanException:

    我使用 ManagementFactory 来获取 JDK1 5 和 JBOSS 4 X 中的 ManagedMbeans 现在想将我的相同代码移至 JDK 1 6 Mbean 部分中断并抛出异常 引起原因 javax management

随机推荐

  • 如何在 iOS 项目中正确配置 Realm DB 文件 (.realm) 的路径?

    对不起我的英语不好 我开发了一个需要自己的本地数据存储的移动应用程序 我选择 Realm 作为数据库管理系统 在研究 Realm 文档的过程中 我对数据库设计 规范化 CRUD 操作以及与代码直接相关的所有内容没有任何问题 我跟着一头雾水
  • Spring Boot 中的多个 WebSecurityConfigurerAdapter 用于多种模式

    我正在尝试为我的项目设置多个 WebsecurityConfigurerAdapter 其中 Spring Boot Actuator API 使用基本身份验证进行保护 所有其他端点都使用 JWtAuthentication 进行身份验证
  • AttributeError:模块“matplotlib.pyplot”没有属性“axline”

    我有个问题 这是文档 https matplotlib org stable gallery pyplots axline html sphx glr gallery pyplots axline py https matplotlib o
  • 如何判断我的“IDisposable”类型何时尚未显式处置?

    It s 很难找到 https stackoverflow com questions 3097145 resharper custom search pattern to warn idisposable objects在设计 编译时类型
  • 内容的右边缘被居中 div 中的垂直滚动条覆盖

    我想创建一个居中弹出窗口 其中包含标题和其下的一张或多张卡片 每张卡片都包含一个小桌子 当卡片数量超出可显示范围时 会出现垂直滚动条 但有一个问题 垂直滚动条覆盖了卡片的右边缘 该行为取决于浏览器 Chrome 刷新页面时出现此问题 调整页
  • 有没有办法让 VS code 与 git worktree 一起工作? (带有 WSL 的 Windows)

    我喜欢在多个工作树中继续签出存储库git worktree轻松地同时在不同的分支上工作 然而 当 git 位于 git worktree 文件夹中时 VS code 似乎无法将 git 识别为 scm 我在文档中找不到有关此内容或扩展的任何
  • 更新框架按钮在 Xcode 8.1 中消失

    更新到 8 1 8B62 后 界面生成器右下角的 解决自动布局问题 快捷方式中不再有用于更新情节提要 xib 中的框架的按钮 我听说过要在新奇的触摸栏上放置这样一个按钮 但这对于像我这样的凡人来说意味着什么 我必须开始使用菜单栏吗 Now
  • Azure CLI 2:如何在 az group deployment create 命令中提供参数?

    我在 Windows 计算机上使用 Azure CLI 2 0 并尝试使用以下命令创建 Docker VMthis https learn microsoft com nl nl azure virtual machines virtual
  • autoindent 是 vim 中 smartindent 的子集吗?

    帮助自动缩进 开始新行时从当前行复制缩进 键入 在插入模式下或使用 o 或 O 命令时 帮助智能缩进 开始新行时进行智能自动缩进 适用于 C 类语言 程序 但也可用于其他语言 通常 使用 smartindent 时也应启用 autoinde
  • 多模块项目中的 Spring 配置

    我是 Spring 新手 遇到了一种情况 即单个项目具有多个模块 包括一个 Web 模块 Web模块使用Spring MVC 但我想知道是否可以在项目级别拥有主要的Spring配置来照顾整个项目 以便我可以充分利用Spring框架 main
  • 使用 getServerSideProps 获取内部 API? (下一个.js)

    我是 Next js 的新手 我正在尝试理解建议的结构并处理页面或组件之间的数据 例如 在我的页面内home js 我获取一个名为的内部 API api user js它从 MongoDB 返回一些用户数据 我正在通过使用来做到这一点fet
  • C++ 中头文件的保护块是什么?

    我正在尝试使用 Code Blocks IDE 创建一个 C 类 并且有一个名为 Guard block 的字段 我进行了搜索 但未能找到任何有用的信息 这个字段有什么用 谢谢 保护块用于防止同一编译单元 c 文件 多次包含头文件 它们看起
  • 如何在C++应用程序中使用curl Nuget包

    我正在尝试在使用 Visual Studio 2017 开发的 C 应用程序中使用curl 我喜欢使用 Nuget 的想法 因为它是实现库的一种非常干净的方式 我尝试遵循 Microsoft 论坛中的以下示例 这导致我使用 rmt curl
  • Android Studio gradle 构建问题:局部变量类型不匹配

    当我试图在互联网上找到解决方案时 但与我的情况没有太多相关 接下来的问题是 构建失败并出现错误 错误 未捕获的翻译错误 com android dx cf code SimException 局部变量类型不匹配 尝试使用 int 类型的局部
  • 向NavigationBar的titleview添加按钮,无需重复代码

    为了提供一些背景知识 我正在制作一个基于 UINavigationControlled 的博客类型应用程序 我认为它最类似于 iPhone 的 facebook 应用程序 无论当前处于活动状态的视图如何 导航栏都会在其标题区域中显示一些按钮
  • 我想将页面生成为没有分页符的单个 pdf 文件

    嗨 我想生成一个pdf大页面作为一个文件 没有分页符 下图显示了下载时的分页符 我想避免 想下载为单页 问题 我不想在下载时将页面拆分为多个页面 但想要一个单页 这是我的工作示例的样子代码沙盒演示 https codesandbox io
  • Databricks 更改默认目录

    似乎当我连接到 Databricks Warehouse 时 它 使用的是默认目录hive metastore 有没有办法将统一目录定义为默认目录 我知道我可以运行查询 USE CATALOG MAIN 然后当前会话将使用unity cat
  • 通过引用返回 std::vector 导致分段错误[重复]

    这个问题在这里已经有答案了 我有一个创建非常大的 std vector 的函数 返回此向量时 由于其大小 我不想再次复制它 因此 我想返回对该向量的引用 然而 这样做会给我带来分段错误 为什么是这样 解决办法是什么 这是我的代码 std v
  • C DLL 无法在 C# 中加载

    我有一个简单的 C DLL 不是 COM 我还有一个运行它的 C 2 0 应用程序 dllimport 该dll被放置在应用程序的exe中 我知道该 dll 没问题 而且我的应用程序调用它成功读取了它 但是当我将它们移动到另一台计算机时 它
  • 强制显式删除 Java 对象

    我正在开发一个处理大量非常密集流量的 Java 服务器 服务器接受来自客户端的数据包 通常为数兆字节 并将它们转发给其他客户端 服务器从不显式存储任何传入 传出数据包 然而服务器不断遇到OutOfMemoryException例外情况 I