java吧 关注:1,240,647贴子:12,712,741

再请教个问题,大量的new会不会影响程序的执行?

只看楼主收藏回复

大概一秒钟 new 一个对象,时间久了会不会崩溃?


IP属地:江苏1楼2021-05-10 15:12回复
    一秒钟一个无所谓,看你回收情况,不回收容易爆堆


    IP属地:浙江2楼2021-05-10 15:29
    收起回复
      别,虽说有jvm垃圾回收机制,也不能这样乱造


      IP属地:河南3楼2021-05-10 15:31
      收起回复
        测试得真理,刚刚构造出了一百万条数据测试,没有明显的卡顿和内存暴增的情况。说明至少一百万条new是不会出问题的。


        IP属地:江苏4楼2021-05-10 16:44
        收起回复
          根据JOL内存布局,最小对象只占16字节,你这100w对象当然不会内存暴涨,也得看你创建的单个对象所占空间


          IP属地:浙江来自Android客户端5楼2021-05-10 16:54
          收起回复
            如果方法一直在执行那问题有点大,局部变量表是作为gcroots的,这些对象一直都不会被回收,迟早要爆,你可以控制局部变量的作用范围并把它置空。如果方法进进出出就不用管他了,只要你不new大对象就没事儿。


            IP属地:重庆来自iPhone客户端6楼2021-05-10 17:09
            收起回复
              第一: 就像楼上所说, 及时置空或者方法内使用, 就会被及时回收. 不断的new和回收就是影响一些性能, 没什么大问题.
              第二: 可以用对象池, 池中 每个对象都有一个boolean标明是否在使用, 使用完置false. 对象池管理类检索对象, 有空闲的则重置并返回. 没空闲的新建, 加入池, 并返回


              8楼2021-05-10 17:32
              回复
                这种东西 ,你很难测出来。
                你测的是for (< 1万)
                {new
                }
                但是人家优化的策略早给你优化没了。
                而现实里就是,你new 出十万对象的时候,内存已经溢出了。


                IP属地:广东9楼2021-05-10 17:47
                回复
                  初学者探讨这个就是个坑。
                  空对空。


                  IP属地:广东10楼2021-05-10 17:48
                  回复
                    初学者不需要担心Java的内存问题。单台服务器分个8G到16G内存就好了。性能瓶颈一般出在数据库SQL上。其次调一下数据库连接池大小和HTT P连接池大小。更难的问题留给你公司里的架构师去解决。


                    IP属地:上海来自iPhone客户端11楼2021-05-10 18:45
                    回复
                      可以调jvm参数
                      你就会看见oom了


                      IP属地:陕西来自Android客户端12楼2021-05-10 18:48
                      回复
                        看对象存活时间了,短的话别太过就无所谓。young GC就都回收了。当然也得看jvm堆的一些参数了。参数合适的话,无所谓的


                        IP属地:山西来自iPhone客户端14楼2021-05-10 19:11
                        回复
                          百十万小意思,不调都上能亿个


                          来自Android客户端15楼2021-05-10 19:15
                          回复
                            一秒对程序来说很久了


                            IP属地:江西来自iPhone客户端16楼2021-05-10 21:53
                            回复
                              大量new然后一直触发fullgc会影响效率吧


                              IP属地:福建来自Android客户端19楼2021-05-10 22:12
                              回复