关于创建对象的问题

关于创建对象的问题

如果在方法中创建对象,那么访问一次方法就会创建一次对象,这样会影响程序的性能,消耗内存。

将对象的创建语句放在类的参数定义的位置,这样当每次请求来的时候,不需要创建对象,直接使用就可以了。这样可以减少新生成对象的消耗,减少jvm垃圾回收。



老师,如果在方法内创建的话,每次访问方法就会创建一次对象,进行一次实例化,那么请问,当发送一次请求的时候,不就会访问一次doget方法吗?这个是对立的吧?


如果把对象放在类的参数定义,在doget方法中,当请求发来,也就创建一次对象吧,实现一次实例化,然后进行调用的阿。我感觉这两者之间好像没区别哎;  “这样当每次请求来的时候,不需要创建对象,直接使用就可以了” 这句没理解。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿慧 2021-03-31 14:24:34

同学你好,

1、PaintingController对象只有一个,在第一次发送请求的时候会进行创建。当发送第一次请求的时候,会创建对象,并访问一次doget方法,这是由框架底层来调用的,我们不需要管。

第一次发送请求时,会创建PaintingController对象并调用doGet()方法,在之后的请求中,不会再创建PaintingController对象。
2、“这样当每次请求来的时候,不需要创建对象,直接使用就可以了” 这句话的解释如下:
在PaintingController类的doGet()方法中,我们想要调用PaintingService类中的方法,那么就需要先创建PaintingService对象,然后再调用方法。

如果在doGet()方法中创建对象,那么每次调用doGet()方法时,都会创建PaintingService对象,这样会影响程序的性能,消耗内存。

如下:

http://img1.sycdn.imooc.com//climg/60641559094aefc609390413.jpg

如果在PaintingController类中创建PaintingService对象,那么在doGet()方法中直接使用PaintingService对象就可以了,不需要再创建了。

如下:

http://img1.sycdn.imooc.com//climg/6064159f09c0b87c09260423.jpg

祝学习愉快~

  • 提问者 rock221 #1

    在PaintingController类中创建PaintingService对象, 这个是当服务器加载的时候会类进行加载, 会创建一次对象,然后第二次发送请求的时候,用这个对象在调用方法就行了。 是这个意思吗? 如果在方法内,那么每次发送请求都会实例化对象。 影响性能 

    2021-03-31 14:44:51
  • 好帮手慕阿慧 回复 提问者 rock221 #2

    同学你好,默认情况下,在PaintingController类首次被调用时,会创建一次对象。在第二次发送请求的时候,用这个对象再调用方法就行了。如果在方法内,那么每次发送请求都会实例化对象,会影响性能 。

    祝学习愉快~

    2021-03-31 16:58:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师