- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
有效的 Java 说:
There is a severe performance penalty for using finalizers.
为什么使用终结器销毁对象会更慢?
最佳答案
因为垃圾收集器的工作方式。出于性能考虑,大多数 Java GC 使用复制收集器,其中短期对象被分配到“伊甸园”内存块中,当该代对象被收集时,GC 只需要复制那些仍然“活着”到更永久的存储空间,然后它可以一次删除(释放)整个“伊甸园”内存块。这是高效的,因为大多数 Java 代码将创建数千个对象实例(盒装基元、临时数组等),其生命周期只有几秒钟。
但是,当您混合使用终结器时,GC 不能简单地一次删除整个代。相反,它需要找出该代中需要终结的所有对象,并将它们排队在实际执行终结器的线程上。同时,GC 也无法有效地完成对对象的清理。因此,它要么必须使它们保持比应有的生命周期更长,要么必须延迟收集其他对象,或两者兼而有之。此外,您还有实际执行终结器的任意等待时间。
所有这些因素加起来会导致显着的运行时损失,这就是为什么通常首选确定性终结(使用 close()
方法或类似方法来显式终结对象的状态)的原因。
关于java - 为什么终结器有 "severe performance penalty"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860121/
我在 python 中使用 dialogflow。我这样调用 API V2: os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "project/xx-pr
以下 onClick 回调函数将导致 1 次重新渲染: const handleClickSync = () => { // Order of setters doesn't matter - R
此 MDX 请求有效: SELECT [Measures].salescount ON COLUMNS, [Date].[2010] ON ROWS FROM [SalesAnalysis] WHER
我不知道 Controller 中的 listContacts 有什么问题map.put("contactList", contactService.listContact());有人可以帮助我吗?
我想检查 Cloud Code 查询响应是否为空。如果查询找到某些东西,代码就可以工作。当没有匹配查询的对象时,我无法处理。我该怎么办? Parse.Cloud.define("testing", f
您好,我在配置 tomcat 时遇到问题在我的本地主机 (windows) 上,我可以在 server.xml 或 root.xml 上添加以下内容 它会在 appName 是应用程序名称并且 d
我们使用最简单的 boost.log v2 版本BOOST_LOG_TRIVIAL(严重性) 2>&1 out.txt 等各种重定向选项时完全丢失。等等。文件最终长度为零,自然不会出现屏幕输出。 有没
最近微软先行放出发布了下一代windows服务器版本windows server 2012,笔者下载下来测试安装了,相对于windows server 2008,确实有许多细节方面的改进。 我是通
分享oracle 12c安装配置方法图文教程,具体内容如下 1、我们开启虚拟机 2、windows sever 2012启动中。 3.看到windows sever 2012的桌面。
我想在两个列表之间的 x 位置设置一个项目,就好像它们是同一个列表一样。例如: data Foo = Foo { list1 :: [Char], list2 :: [Char]} f
我是 R 的新手,对 for 循环有点困惑。 我尝试在满足指定条件后在 for 循环中重复几个步骤。我试图将循环后退一步,但发现循环一直在计数并忽略了我的命令。这是一个简单的例子来说明我的意思: a
如何使用 5 个 CompletableFutures 异步执行 20 个 Runnable 任务(或 1 个任务 20 次)? 这就是我所拥有的: Runnable task = () -> {
我有一个字符串:String s = "输入的格式必须为:'$var1$'-'$var1$'-'$var1$'"。 我想将 $ 之间的文本替换为其他文本,因此结果在控制台上可能如下所示: “输入的格式
我无法运行代理 BookBuyerAgent。 项目路径为D:\studia\magisterka\sem10\jade\JADE-all-4.1.1(1)\JADE-all-4.1\jade\src
我正在学习如何使用 Makefile 进行编译。我想我已经理解了这个“工具”的目的,但我面临着一个问题。我正在开发一个项目,需要使用相同的 Makefile 编译多个程序。我的程序基于相同的练习,但它
在通常的 Spring MVC 中,我可以创建一个 Dao 接口(interface)以及针对不同 Spring 配置文件的该接口(interface)的多个实现。但如果我想实现 Spring Dat
我正在尝试使用 Restangular 从基于 Node.js 的 MongoDB 实例中获取一系列对象;但是,我无法保证我希望通过 ID 抓取的对象数量始终相同。 为了演示,这里是原理的代码片段:
在这个例子中我有两个表。 (示例列名) 首先是产品 product_id | product_text 第二张表是价格。 price_productid | price_datestart | pri
我有以下查询: SELECT Impressions.id AS `Impressions__id`, Impressions.timestamp AS `Impressions__times
一个按预期工作,但我想要两个 View 解析器,这可能吗? ?? 我想渲染一个 View ,通过调用 new ModelAndVie
我是一名优秀的程序员,十分优秀!