你认为unity在开发过程中哪些地方比较容易造成内存泄漏和内存泄漏问题?如何避免?

题目
问答题
你认为unity在开发过程中哪些地方比较容易造成内存泄漏和内存泄漏问题?如何避免?
参考答案和解析
正确答案: 脚本做载入不删除处理时,往往脚本中还有一些不用的变量,容易导致内容泄漏。
解析: 暂无解析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

java 中会存在内存泄漏吗,请简单描述。


正确答案:

 

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。java 中有垃圾

回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被

垃圾回收器从内存中清除掉。由于Java 使用有向图的方式进行垃圾回收管理,可以消除引

用循环的问题,例如有两个对象,相互引用,只要它们和根进程不可达的,那么GC 也是可

以回收它们的,例如下面的代码可以看到这种情况的内存回收:

package com.huawei.interview;

import java.io.IOException;

public class GarbageTest {

/**

* @param args

* @throws IOException

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

try {

gcTest();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("has exited gcTest!");

System.in.read();

System.in.read();

System.out.println("out begin gc!");

for(int i=0;i<100;i++)

{

System.gc();

System.in.read();

System.in.read();

}

}

private static void gcTest() throws IOException {

System.in.read();

System.in.read();

Person p1 = new Person();

System.in.read();

System.in.read();

Person p2 = new Person();

p1.setMate(p2);

p2.setMate(p1);

System.out.println("before exit gctest!");

System.in.read();

System.in.read();

System.gc();

System.out.println("exit gctest!");

}

private static class Person

{

byte[] data = new byte[20000000];

Person mate = null;

public void setMate(Person other)

{

mate = other;

}

}

}

java 中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存

泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不

能被回收,这就是java 中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对

象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃

圾回收器回收的,这就是java 中可能出现内存泄露的情况,例如,缓存系统,我们加载了

一个对象放在缓存中(例如放在一个全局map 对象中),然后一直不再使用它,这个对象一直

被缓存引用,但却不再被使用。

检查java 中的内存泄露,一定要让程序将各种分支情况都完整执行到程序结束,然后看某

个对象是否被使用过,如果没有,则才能判定这个对象属于内存泄露。

下面内容来自于网上(主要特点就是清空堆栈中的某个元素,并不是彻底把它从数组中拿掉,

而是把存储的总数减少,本人写得可以比这个好,在拿掉某个元素时,顺便也让它从数组中

消失,将那个元素所在的位置的值设置为null 即可):

我实在想不到比那个堆栈更经典的例子了,以致于我还要引用别人的例子,下面

的例子不是我想到的,是书上看到的,当然如果没有在书上看到,可能过一段时

间我自己也想的到,可是那时我说是我自己想到的也没有人相信的。

public class Stack {

private Object[] elements=new Object[10];

private int size = 0;

public void push(Object e){

ensureCapacity();

elements[size++] = e;

}

public Object pop(){

if( size == 0)

throw new EmptyStackException();

return elements[--size];

}

private void ensureCapacity(){

if(elements.length == size){

Object[] ldElements = elements;

elements = new Object[2 * elements.length+1];

System.arraycopy(oldElements,0, elements, 0, size);

}

}

}

上面的原理应该很简单,假如堆栈加了10 个元素,然后全部弹出来,虽然

堆栈是空的,没有我们要的东西,但是这是个对象是无法回收的,这个才符合了

内存泄露的两个条件:无用,无法回收。

但是就是存在这样的东西也不一定会导致什么样的后果,如果这个堆栈用的

比较少,也就浪费了几个K 内存而已,反正我们的内存都上G 了,哪里会有什么

影响,再说这个东西很快就会被回收的,有什么关系。下面看两个例子。

例子1

public class Bad{

public static Stack s=Stack();

static{

s.push(new Object());

s.pop(); //这里有一个对象发生内存泄露

s.push(new Object()); //上面的对象可以被回收了,等于是自愈了

}

}

因为是static,就一直存在到程序退出,但是我们也可以看到它有自愈功

能,就是说如果你的Stack 最多有100 个对象,那么最多也就只有100 个对象无

法被回收其实这个应该很容易理解,Stack 内部持有100 个引用,最坏的情况就

是他们都是无用的,因为我们一旦放新的进取,以前的引用自然消失!

第2题:

多出口函数可能会发生()问题。

A.产生逻辑错误

B.降低可靠性

C.产生内存泄漏

D.降低运行性能


参考答案:B

第3题:

()论项目的信息管理 项目管理寻求的是防止在信息系统开发过程中所使用和完成的机密信息向外泄漏。如果机密信息泄漏,不但会发生经济损失,更会造成一定的社会影响,所以制定机密信息管理规则,防止信息外泄是非常必要的。 请根据你的经验,论述问题1~3。 1、叙述你所参与的系统开发项目的概要,以及其中作为机密来管理的信息,并说明理由及其机密度。 2、具体叙述你进行机密管理的原则和方法,以及运用这些原则和方法来进行的日常管理情况,以你最花工夫的一点作为中心来具体说明。另外,请简述降低机密信息泄漏时所造成影响的对策。 3、如何评价你所采用的原则和方法以及日常管理,今后准备如何改进。


正确答案:略
写作要点
    1、叙述作者参与管理和开发的信息系统的概要和所担任的工作,以及在该项目中有哪些信息是作为机密来管理的,如何划分机密度,为什么要作为机密进行管理?
    2、简单介绍你进行机密信息管理的原则和方法。
    3、针对项目实际,以你最花工夫的一点作为中心来具体说明这些原则和方法来进行的日常管理情况。
    4、为了降低机密信息泄漏时所造成影响,你采取过什么措施?
    5、实事求是地分析你所采取的原则和方法,以及日常管理的效果。还存在什么问题,今后如何改进。

机密信息管理的大致流程如下:
    首先,要明确需要进行机密管理的信息,决定其机密度(泄漏影响水平等)。
    其次,按照其机密度,决定登陆控制,工作管理,文档管理等各项原则,通过学习,提高全体项目干系人的机密管理意识,彻底熟悉该规则。
    实施项目时,要彻底贯彻、定期确认是否根据规则运作、是否违反规则或者泄漏信息等日常管理工作。
    另外,要预计到机密信息泄漏的情况,将损害控制在最低限度、使机密信息使用起来非常困难等,也有必要尽量降低泄漏时所造成的影响。例如,尽可能将机密信息分开管理,将机密信息设定双重密码以进行保护等。

第4题:

无论是社交网络还是云计算,如果隐私策略设置不当,将会造成隐私信息泄漏。隐私信息泄漏有几种类型?()

  • A、身份泄漏
  • B、连接泄漏
  • C、内容泄漏
  • D、内存泄漏
  • E、虚拟泄漏

正确答案:A,B,C

第5题:

● 通过疲劳强度测试,最容易发现(55)问题。

(55)

A.并发用户数

B.内存泄漏

C.系统安全性

D.功能错误


正确答案:B

第6题:

什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?


正确答案:
 

第7题:

通过疲劳强度测试,最容易发现(55)问题。

A.并发用户数

B.内存泄漏

C.系统安全性

D.功能错误


正确答案:B
解析:本题考查性能测试中的疲劳强度测试。疲劳强度测试的概念如下。通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。因为疲劳强度测试强调持续执行一段时间业务,故对于软件系统来讲,最容易暴露的性能故障是内存泄漏,以及内存是否不足。

第8题:

指出该代码是否存在内存泄漏。


正确答案:否或不存在内存泄漏
否,或不存在内存泄漏 解析:已知程序的输出全部为1,根据主程序中Stock b;这一语句可以判断出:类Stock有默认的构造函数,且该构造函数将初始化类中的一些成员变量。所以(1)处应该填写的内容为Stock的构造函数,因为该构造函数的函数体内没有语句,所以只能采用初始化列表的方式对成员变量进行初始化。成员函数output输出成员变量的值,因此(2)处应该填写标准的输出cout。
由于类至少需要一个共有的构造函数,因此,第4行的protected应该更改为public:,而析构函数不能有返回类型,因此第9行应该去掉void。
main函数中对类的使用没有通过new操作符生成stock类的对象,因此不存在内存泄露,并且main函数中三种对象的生成方式是等价的。

第9题:

在发生易燃液体泄漏的区域内,哪些地方不宜停留?


正确答案: 泄漏区域的下水井、电缆井、煤气井道井盖上方及周围不易停留,以防爆炸引起伤亡。

第10题:

隐私信息泄漏不包括()

  • A、身份泄漏
  • B、连接泄漏
  • C、内容泄漏
  • D、内存泄漏

正确答案:D