Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Java引用不安全地释放内存?

如何使用Java引用不安全地释放内存?
EN

Stack Overflow用户
提问于 2014-06-26 03:51:23
回答 1查看 2.6K关注 0票数 4

Java不安全类允许您为对象分配内存,如下所示,但使用此方法,如何释放完成时分配的内存,因为它没有提供内存地址.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    Field f = Unsafe.class.getDeclaredField("theUnsafe"); //Internal reference
    f.setAccessible(true);
    Unsafe unsafe = (Unsafe) f.get(null);

    //This creates an instance of player class without any initialization
    Player p = (Player) unsafe.allocateInstance(Player.class);

是否有从对象引用访问内存地址的方法,也许默认hashCode实现返回的整数可以工作,所以您可以.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 unsafe.freeMemory(p.hashCode());

似乎不对--怎么.

EN

回答 1

Stack Overflow用户

发布于 2014-06-26 05:19:50

  • 对象引用的“内存地址”没有意义,因为对象可以跨Java移动。
  • 您不能显式地释放Unsafe.allocateInstance分配的空间,因为这个空间属于Java,只有垃圾收集器才能释放它。
  • 如果您希望在Java之外管理自己的内存,可以使用Unsafe.allocateMemory / Unsafe.freeMemory方法。它们处理表示为long的原始内存地址。但是,这个内存不是针对Java对象的。
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24429777

复制
相关文章
MySQL 删除数据不释放内存
使用delete删除的时候,MySQL并没有把数据文件删除,只会将已经删除的数据标记为删除,因此并不会彻底的释放空间。
默存
2023/09/01
6220
MySQL 删除数据不释放内存
出大事了,涛哥你们Java应用GC后不释放内存
公司众多系统中有一个系统使用的是 CMS 垃圾回收器,JVM 初始堆内存不等于最大堆内存,但通过监控信息发现:在经过一次 FullGC 之后,服务器物理内存剩余空间并未提升,运维同事告诉我说,有内存泄露,因为 GC 了之后,内存并没有被释放。按照大部分人的理解,FullGC 之后 JVM 进程会释放的内存一部分还给物理内存,下面通过几个实验来对比验证一下 CMS 和 G1 的物理内存归还机制。
业余草
2021/12/06
5.6K0
出大事了,涛哥你们Java应用GC后不释放内存
如何证明sleep不释放锁,而wait释放锁?
从上述代码可以看出,我们给 wait() 和 notify() 两个方法上了同一把锁(locker),但在调用完 wait() 方法之后 locker 锁就被释放了,所以程序才能正常执行 notify() 的代码,因为是同一把锁,如果不释放锁的话,是不会执行 notify() 的代码的,这一点也可以从打印的结果中证实(结果输出顺序),所以综合以上情况来说 wait() 方法是释放锁的。
磊哥
2020/07/22
2.7K0
漫画:如何证明sleep不释放锁,而wait释放锁?
从上述代码可以看出,我们给 wait() 和 notify() 两个方法上了同一把锁(locker),但在调用完 wait() 方法之后 locker 锁就被释放了,所以程序才能正常执行 notify() 的代码,因为是同一把锁,如果不释放锁的话,是不会执行 notify() 的代码的,这一点也可以从打印的结果中证实(结果输出顺序),所以综合以上情况来说 wait() 方法是释放锁的。
一个正经的程序员
2022/04/11
1.1K0
漫画:如何证明sleep不释放锁,而wait释放锁?
如何释放Python占用的内存?
在调用数据时,经常遇到内存火箭上涨的情况,而且一些变量不使用了,但是依旧占着内存,大有在其位不谋其政的意味,因此专门学习了下,并做了些实验,记录之,若不想多看,仅仅想释放内存,直接跳转到5.2和5.3即可。
自学气象人
2023/06/20
2.1K0
如何释放Python占用的内存?
【Android 内存优化】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 )
强引用 ( 不回收 ) > 软引用 ( OOM 前回收 ) > 弱引用 ( GC 必回收 ) > 虚引用 ( 回收前通知 )
韩曙亮
2023/03/27
5.3K0
如何通过软引用和弱引用提升JVM内存使用性能!
初学者或初级程序员在面试时如果能证明自己具有分析内存用量和内存调优的能力,这相当有利,因为这是针对5年左右相关经验的高级程序员的要求。而对于高级程序员来说,如果能在面试时让面试官感觉你确实做过内存调优的工作,那么面试官很有可能不问Java Core部分的其它问题了,毕竟虚拟机调优是Java Core部分非常资深的知识点。
Java后端技术
2018/08/09
9990
如何通过软引用和弱引用提升JVM内存使用性能!
DirectByteBuffer内存释放
网络编程为避免频繁的在用户空间与内核空间拷贝数据,通常会直接从内核空间中申请内存,存放数据,在Java中,把内核空间的内存称之为直接内存,nio包中的ByteBuffer的allocateDirect方法,就是申请直接内存
JavaEdge
2021/12/07
3.3K0
DirectByteBuffer内存释放
iframe内存释放
Ext 核心开发人员Jack的回答是,TabPanelItem在关闭时并不会对自定义到tab中的元素做特殊处理,这部分工作必须在控件外来完成。另一方面, 相关资料称IE在iframe元素的回收方面存在着bug,在通常情况下应该将该元素的src属性值修改为”abort:blank”,并手工将其从 DOM树上移除,然后把脚本中引用它的变量置空并调用CollectGarbage()就可以避免iframe不能正常回收所造成的内存泄露。
河岸飞流
2019/09/11
5.1K0
Java直接内存分配和释放的讲解
直接内存是分配在JVM堆外的,那JVM是怎么对它进行管理的呢?本文主要介绍一下在Java中,直接内存的空间分配和释放的机制。
Jensen_97
2023/07/20
8380
Java直接内存分配和释放的讲解
内存占用过高,缓存不释放导致死机处理方案
1、某分行部署的某台服务器内存占用过高,导致死机; 2、代码层面检查暂未发现问题,服务器硬重启持续一段时间后(3-5天)再次占满。
范一刀
2021/08/10
4.6K0
centos7释放内存|yum清理缓存与释放内存
腾讯云服务器内存占用过高,安装的是centos7系统,准备对centos7释放内存,发现使用yum清理缓存与释放内存非常的方便,先使用free -m命令来查看centos7系统剩余了多少内存,准备清理掉,如下:
拓荒者
2019/03/16
9.8K0
Mongodb 定时释放内存
对于主要是写入的数据库,mongodb内存占满之后写入效率会变得不稳定 这个时候,你需要释放内存(可试用db.runCommand({closeAllDatabases:1}) )实现 下面的c#代码可以用来定时释放内存,使用的时候注意把路径换成你服务器的路径,另外就是修改下释放频率 Technorati 标签: mongodb class Program { static void Main(string[] args) { while (t
JadePeng
2018/03/12
5.2K0
centos释放无用内存
centos中发现自己的进程消耗内存极少,但是系统的空闲内存确实没了,其实是CentOS为了提高效率,把部分使用过的文件缓存到了内存里。这样的话如果不需要这样的文件性能,可以直接释放来缓解内存压力。 检测命令: top 内存查看 shift+m 排序 解决: sync echo 3 > /proc/sys/vm/drop_caches 再用top检测即可
似水的流年
2019/12/07
3.4K0
如何使用scemu安全地模拟Shellcode执行
scemu是一款功能强大的Shellcode模拟工具,该工具支持x86 32位模拟仿真,可以帮助广大研究人员以安全的方式运行和分析Shellcode。
FB客服
2022/02/25
1K0
如何使用scemu安全地模拟Shellcode执行
Linux服务器如何释放内存空间
Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率,所以这也正是Linux内存管理中非常出色的一点,所以乍一看内存剩余的非常少,但是在程序真正需要内存空间时,Linux会将缓存让出给程序使用,这样达到对内存的最充分利用,所以真正剩余的内存是free+buff/cache
星哥玩云
2022/07/25
23.3K0
Linux服务器如何释放内存空间
【说站】java弱引用如何结合队列使用
弱引用可与引用队列联合使用,弱引用对象会被垃圾回收,Java虚拟机将该弱引用加入与之相关的引用队列中。
很酷的站长
2022/11/23
4300
【说站】java弱引用如何结合队列使用
IOS应用内存释放机制
这是由iOS系统管理决定的,但APP退出在后台后,只有10秒的持续运行时间,然后暂停。但该APP还在内存中,当出现内存警告,也就是别的APP要运行,而此时内存又不足的情况下,系统会回收停在后台APP所占用的内存。如果出现这种情况,那么你再次打开你的APP,就会重新启动。 不知道你是为什么要让APP在后台还要继续运行,如果非得这样,那可以使用多线程技术中的gcd,可以让APP退出后继续运行很长一段时间(大概10分钟) iOS APP类型: 1. 保存现场。按下Home键10秒内直接杀死进程,并释放内存。 2
流柯
2018/08/31
3K0
点击加载更多

相似问题

Java不释放内存

31

你如何安全地释放内存?

36

为什么Java不释放内存

32

Apache :垃圾回收不释放内存[Java]

20

如何使用已调整的指针安全地释放内存

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文