返回信息流RT,程序里面会涉及到大数组运算,所以想在使用之后及时把占用的内存回收掉,原本打算直接把引用置null,但在网上搜了搜,有人说这样做用处不大;也有推荐每次自己调用System.gc()的,但也有人反对说自己调用后,JVM也不一定会立刻回收......小白晕晕的,到底怎么做比较好?
顺便希望大神们指导一下想要深入了解JVM原理,如何入门[ema1]
望大神们赐教[ema23]
这是一条镜像帖。来源:北邮人论坛 / java / #47218同步于 2016/1/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
大神们,小白求助一个大数组的回收问题
airfan
2016/1/11镜像同步15 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
谢谢,还没写完,不过粗略算了算内存可能会的。
【 在 icyfox 的大作中提到: 】
: 你的软件经常会OOM么?
: 如果不会的话,就不要考虑这个问题。
: Java就是为了省事儿的
建议不要自己搞,让JVM自己去管理内存就好了。
如果担心这个有问题,可以在写完之后做一下压力测试,可以主要关注一下GC的频率以及Full GC暂停的时间(因为full gc 会暂停所有线程,如果是webserver的话有可能导致这期间的request超时)
如果gc的值可以接受就不用搞什么优化了。
如果gc暂停时间太长,可以先考虑调整下JVM的参数(各个xx代的大小之类的)。
【 在 airfan 的大作中提到: 】
: RT,程序里面会涉及到大数组运算,所以想在使用之后及时把占用的内存回收掉,原本打算直接把引用置null,但在网上搜了搜,有人说这样做用处不大;也有推荐每次自己调用System.gc()的,但也有人反对说自己调用后,JVM也不一定会立刻回收......小白晕晕的,到底怎么做比较好?
: 顺便希望大神们指导一下想要深入了解JVM原理,如何入门
: 望大神们赐教
谢谢~
【 在 aiquestion 的大作中提到: 】
: 建议不要自己搞,让JVM自己去管理内存就好了。
: 如果担心这个有问题,可以在写完之后做一下压力测试,可以主要关注一下GC的频率以及Full GC暂停的时间(因为full gc 会暂停所有线程,如果是webserver的话有可能导致这期间的request超时)
: 如果gc的值可以接受就不用搞什么优化了。
: ...................
还是说一句,有用,
有什么用呢,让JVM下次回收的时候回收掉
JVM下次什么时候回收呢? 不知道,很可能是eden不够的时候
我可以控制它的回收吗? 不能,也能。 System.gc()
但是,System.gc()只是告诉JVM,我想让你去回收内存。
至于JVM听不听话,要墨迹多久,那就不一定了。
话都说到这份上了,如果你的需求要消耗电脑内存以上的内存数(8G? 16G?),那回收也没用。
如果不用那么多,交给JVM处理。
如果觉得JVM实时性不好,请用C++。
【 在 airfan (airfan) 的大作中提到: 】
: 所以说置null确实毫无用处是吗?
http://stackoverflow.com/questions/850878/does-setting-java-objects-to-null-do-anything-anymore
【 在 airfan 的大作中提到: 】
: 所以说置null确实毫无用处是吗?