首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java内存压力

java内存压力
EN

Stack Overflow用户
提问于 2011-09-06 20:41:31
回答 2查看 1.8K关注 0票数 3

Java中有没有像GC.AddMemoryPressure method in .NET这样告诉运行时非托管内存分配的特性

EN

回答 2

Stack Overflow用户

发布于 2011-09-06 20:46:29

我猜这在Java中不是必需的。“如果一个小的托管对象分配了大量的非托管内存”在Java中根本不会发生,如果您通过JNI调用本机(非托管)函数,则不会将内存分配给JVM的托管内存表。

供参考:

票数 2
EN

Stack Overflow用户

发布于 2011-09-06 21:41:05

在Java中,直接内存是单独管理的,可以认为是“非托管”的。在Sun/Oracle JVM中,它有自己的内存使用限制,您可以同时达到堆大小和直接内存大小的限制。

在Sun/Oracle JVM中,您可以使用内部API显式地释放直接内存块。你很少需要这样做,但下面是如何做的

代码语言:javascript
复制
ByteBuffer bb = ByteBuffer.allocateDirect(1024*1024);

((DirectBuffer) bb).cleaner().clean();

您可以在不触发GC的情况下执行此操作一万次。

顺便说一句:内存映射文件使用少量的堆,不计入直接内存限制。您可以映射的数量实际上是无限的。(尽管在一个MappedByteBuffer中限制为2 2GB )

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7320093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档