当前位置: 首页 > 知识库问答 >
问题:

是否可以通过给定线程获得保留堆内存的大小,而不通过编程创建内存转储?[副本]

范福
2023-03-14

是否可以通过给定线程获取保留堆内存的大小,而无需以编程方式创建内存转储?

我知道在运行时上下文中获取内存大小是可能的,例如:

 Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

但是我需要计算给定线程占用的内存,而不创建内存转储。

更新:线程在执行时分配对象。在任何给定时刻,JVM都知道哪个线程分配了哪些对象。所以我需要提取由给定线程分配的对象的内存大小。

有可能吗?

共有1个答案

华俊贤
2023-03-14

问题是——线程没有内存。进程有内存。线程只是进程中的一个执行流。分配给线程的唯一专用内存是堆栈(即使通常是进程管理的)。

然后线程不会保留堆内存

 类似资料:
  • 我试图写一个存储过程。通过SQL浏览器创建它很顺利,但是当我把它保存在SQL文件中并通过SQLTool加载它时,它失败了 我收到以下错误 调用SqlTool。objectMain(sqlToolParams); 在哪里 我需要帮助纠正语法。 我试图从他那里得到线索http://hsqldb.org/doc/2.0/util-guide/sqltool-chapt.html#sqltool_raw-

  • 问题内容: 我找到了许多参考资料,它们解释了如何使用该类以编程方式编译Java 类: 但是,我想知道是否有一个开放源代码库,可以让我编译以编程方式生成的源代码(因此不涉及src文件)并在输出流中生成一些字节代码(而不在文件系统中生成类文件) )。 例如,我正在寻找能够写这样的东西: 谢谢你的帮助。 问题答案: 首先,请看JavaCompiler API 。基本上: 在字符串中创建Java类。 将字

  • 我正在使用Nodejs。我计划增加Nodejs应用程序的内存限制。 在谷歌上搜索时,我发现了这篇文章:增加节点。js内存限制。 作者说他的服务器只有8GB的物理内存,但他的Nodejs进程使用的是28GB的内存。我假设它正在使用物理交换内存。文章还提到,一个著名的Nodejs框架的开发人员为他的Nodejs使用了15GB的内存限制。 我试图从其他编程语言中搜索一些示例。在Java中,将交换内存用于

  • 问题内容: 我正在尝试使用创建一个6 x 12矩阵 虽然这样做有效,但问题是内部数组实际上都引用同一对象。 我想(和预期)的值是。 如何强制填充给定参数的按值复制(例如,在我的情况下该参数)而不是按引用复制? 问题答案: 您可以使用Array.from()代替: 感谢在评论中提出的关于进一步改善此问题的建议。 原始声明(上面进行了优化):

  • 我正在开发创建线程的代码,但没有扩展thread类或实现runnable接口,即通过匿名内部类。。 现在请告诉我,我可以用同样的方法创建子线程吗...!!我尝试的是... 但是其中有两个run()方法,我认为这不实用。。请建议。。!

  • MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程。 编写存储过程并不是件简单的事情,但是使用存储过程可以简化操作,且减少冗余的操作步骤,同时,还可以减少操作过程中的失误,提高效率,因此应该尽可能的学会使用存储过程。 下面主要介绍如何创建存储过程。 可以使用