memory相关内容

Java VM - 释放的内存是否返回到操作系统?

在 Java 运行时,如果我的应用程序释放内存,运行时是否会将内存释放回操作系统?还是回到我的流程? 解决方案 这取决于JVM实现,规范中没有指定. Sun JVM 将保留它作为第一步.一旦分配的内存的某个(可配置)百分比未使用,它会将其中的一部分返回给操作系统(该行为受 MinHeapFreeRatio 和 MaxHeapFreeRatio 设置). ..
发布时间:2022-01-16 12:30:20 Java开发

空闲时的JVM锯齿模式?JVM 在此期间做了什么?

我想知道.我有一个带有 servlet 的简单 Java Web 项目.当没有用户使用它时(我在 GlassFish 上本地托管它),我仍然在进程的内存使用中看到锯齿模式.我似乎无法理解 JVM 在做什么?我了解JVM使用的内存的正常流动.堆中充满了应用程序正在创建的对象.在某个点,堆到达垃圾收集器进入的点,它将删除所有不再使用的“缓存"对象,以便可以创建新对象并可以填充堆大小. 我想知道的 ..
发布时间:2022-01-16 12:30:05 Java开发

多个 JVM 进程可以共享公共类的内存吗?

我想在我的 Web 服务器上运行多个 Java 进程,每个 Web 应用程序一个.我正在使用一个具有大量支持类和 jar 文件的 Web 框架(Play),并且 Java 进程使用大量内存.一个 Play 进程显示大约 225MB 的“驻留私有"内存.(我正在使用 Java 1.7.0_05 的 Mac OS X 上对此进行测试.)特定于应用程序的代码可能只有几 MB.我知道典型的 Java We ..
发布时间:2022-01-16 12:27:01 Java开发

对象的地址在其生命周期内是否固定?

对象的地址在其生命周期内是不变的还是可以改变的?我只是认为一个对象的地址永远不会改变.它依赖于JVM吗?我还没有找到任何明确的规范. 解决方案 java中对象的地址不固定;相反,它可能会改变(视情况而定). 这是因为通常对象是在伊甸园空间中分配的.然后它们移动到幸存者空间,如果它们在一些垃圾收集周期中幸存下来,它们也会移动到老年代空间.所以它确实改变了.但是,如果对象被分配在伊甸园空 ..
发布时间:2022-01-16 12:26:37 Java开发

无法为对象堆保留足够的空间来启动 JVM

刚刚遇到奇怪的问题.当我输入时 java -version 我明白了 VM初始化时出错无法为对象堆保留足够的空间无法创建Java虚拟机. . java -Xms64m -Xmx64m -version 这个命令很好用 java 版本“1.6.0_24"Java(TM) SE 运行时环境 (build 1.6.0_24-b07)Java HotSpot(TM) 客户端 VM(内部版本 ..
发布时间:2022-01-16 12:15:54 Java开发

当不再需要时,JVM 是否会将空闲内存返还给操作系统?

我有一个应用程序暂时需要一定数量的内存/堆用于某些进程.给定一个合理的 JVM 最大堆大小值作为选项,JVM 从一个小堆开始,并根据需要向操作系统请求更多内存. 我的问题是,当我的应用程序不再需要太多内存时,JVM 是否会将额外的内存返还给操作系统(例如,用于其他进程).目前,我的应用程序似乎永远保留了该内存,即使不再需要. 解决方案 JVM确实将内存返回给操作系统,但只是很不情愿, ..
发布时间:2022-01-16 12:15:27 Java开发

理解 JVM 内存分配和 Java 内存不足:堆空间

我正在研究如何真正了解 JVM 中的内存分配是如何工作的.我正在编写一个内存不足的应用程序:堆空间异常. 我知道我可以传入 VM 参数(例如 Xms 和 Xmx)来增加 JVM 为正在运行的进程分配的堆空间.这是问题的一种可能解决方案,或者我可以检查我的代码是否存在内存泄漏并在那里解决问题. 我的问题是: 1) JVM 实际上是如何为自己分配内存的?这与操作系统如何将可用内存传递 ..
发布时间:2022-01-16 12:12:13 Java开发

在 Docker 容器中运行的 JVM 的驻留集大小 (RSS) 和 Java 总提交内存 (NMT) 之间的差异

场景: 我有一个在 docker 容器中运行的 JVM.我使用两个工具做了一些内存分析:1) top 2) Java Native Memory Tracking.这些数字看起来令人困惑,我试图找出导致差异的原因. 问题: Java 进程的 RSS 报告为 1272MB,Java 总内存报告为 790.55 MB.我如何解释剩余的内存 1272 - 790.55 = 481.44 ..
发布时间:2022-01-16 12:11:36 Java开发

Java 内存解释 (SUN JVM)

我试图找到对 sun java vm 内存段的解释,这也是管理员可以理解的.它应该解释什么是堆/非堆内存以及不同内存池的意义. 如果它以某种方式与 jconsole 视图相关,那将是一个奖励. 有没有这样解释的网站? 解决方案 这是我记下的资源列表.其中一些解释了堆/垃圾收集的工作原理,而另一些则详细介绍了如何配置所有内容. IBM 垃圾回收是如何工作的? 垃圾回 ..
发布时间:2022-01-16 11:59:05 Java开发

调用 intern() 方法后,内存中的 new String() 对象何时被清除

列表list = new ArrayList();for (int i = 0; i 上例中,调用string.intern()方法后,堆(sb.toString)中创建的1000个对象什么时候会被清空? 编辑 1:如果不能保证这些对象可以被清除.假设 GC 没有运行,使用 string.intern() 本身是否已经过时?(就内存使用而言?) 在使用 intern() 方法时,有 ..

python什么时候删除变量?

我知道 python 有一个自动垃圾收集器,因此它应该在不再引用变量时自动删除变量. 我的印象是局部变量(函数内部)不会发生这种情况. def funz(z):x = f(z) # x 是一个 np.array 并且包含很多数据x0 = x[0]y = f(z + 1) # y是一个np.array,包含很多数据y0 = y[0]# x 和 y 在这里仍然可用吗?返回 y0, x0 de ..
发布时间:2022-01-16 10:20:56 Python

在 Python 中强制垃圾收集以释放内存

我有一个 Python2.7 应用程序,它使用了很多 dict 对象,这些对象主要包含键和值的字符串. 有时不再需要这些字典和字符串,我想将它们从内存中删除. 我尝试了不同的东西,del dict[key]、del dict 等.但是应用程序仍然使用相同的内存量. 下面是一个我希望为内存付费的示例.但它没有:( 导入 gc导入资源定义内存():print('内存使用:% 2.2 ..
发布时间:2022-01-16 10:18:13 Python

使用 sun.misc.Unsafe? 强制释放直接 ByteBuffer 已分配的本机内存的示例

JDK 提供了分配所谓的直接 ByteBuffers 的能力,其中内存在 Java 堆之外分配.这可能是有益的,因为垃圾收集器不会触及此内存,因此不会增加 GC 开销:这对于缓存等长寿命事物的属性非常有用. 然而,现有实现存在一个关键问题:只有在对拥有的 ByteBuffer 进行垃圾回收时才异步分配底层内存;没有办法强制提前释放.这可能会产生问题,因为 GC 周期本身不受 ByteBuff ..
发布时间:2022-01-16 10:17:18 Java开发