Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by dansav · Jul 14, 2012 at 10:10 PM · listdestroyclassmemoryremove

how do I remove a class item from a list?

What's the proper way to remove an item that is a class from a list and free up the memory.

//The class can be composed of unity objects and also large strings which can take large amounts of memory.

MyClass { var go:GameObject; var largedata:String; }

var classList=new List.();

What's the best way to remove an item from classList and also free up all memory associated with the class item?

Thanks

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Eric5h5 · Jul 14, 2012 at 10:50 PM

See the MSDN docs for List, namely the Remove commands. If an item in the List is no longer referenced, then the garbage collector will take care of it eventually. The List itself won't free memory, since List is actually backed by an array, which (unless you manually specify otherwise) starts with enough space allocated for 4 elements in the List, and doubles that to 8 if you add enough items, then 16, 32, etc., but it doesn't reduce the size of the array if you remove items. If you have a huge List and you remove a lot of items, and want to get back some memory, see the TrimExcess command. Note that classes are by reference anyway, so the List is only storing references to the actual class instances, not the instances themselves.

Comment
Add comment · Show 4 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image dansav · Jul 15, 2012 at 12:00 AM 0
Share

Thank you. Do I have to also use destroy on the unity objects the class creates, or set any variables to null in addition to using remove?

avatar image Eric5h5 · Jul 15, 2012 at 04:12 AM 0
Share

Yes, Unity objects are not handled by $$anonymous$$ono, so you need to Destroy them. Setting variables to null doesn't do anything, since they are marked for garbage collection when they go out of scope anyway. Setting to null discouraged in .NET, at least (for the purposes of garbage collection); not sure if $$anonymous$$ono works the same way,

avatar image dansav · Jul 15, 2012 at 04:19 AM 0
Share

Thanks again for the clarifications. Would anything change if I'm working on an ios project?

avatar image Eric5h5 · Jul 15, 2012 at 04:24 AM 0
Share

No.       

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

A node in a childnode? 1 Answer

Remove a destroy object from a list, then reload the list 2 Answers

Removing a class object from a list(.remove not working) C# 1 Answer

Memory leaks? 2 Answers

Removing music gameobject when no-longer wanted. 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges