{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/6276","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/6276/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/6276/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/6276/events","html_url":"https://github.com/dotnet/roslyn/issues/6276","id":113101909,"number":6276,"title":"make CompilationTracker.Finalize in Workspace to create p2p reference that doesnt hold onto compilation strongly","user":{"login":"heejaechang","id":1333179,"avatar_url":"https://avatars.githubusercontent.com/u/1333179?v=3","gravatar_id":"","url":"https://api.github.com/users/heejaechang","html_url":"https://github.com/heejaechang","followers_url":"https://api.github.com/users/heejaechang/followers","following_url":"https://api.github.com/users/heejaechang/following{/other_user}","gists_url":"https://api.github.com/users/heejaechang/gists{/gist_id}","starred_url":"https://api.github.com/users/heejaechang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/heejaechang/subscriptions","organizations_url":"https://api.github.com/users/heejaechang/orgs","repos_url":"https://api.github.com/users/heejaechang/repos","events_url":"https://api.github.com/users/heejaechang/events{/privacy}","received_events_url":"https://api.github.com/users/heejaechang/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Area-IDE","name":"Area-IDE","color":"5319e7"},{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Feature%20Request","name":"Feature Request","color":"fc2929"},{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Tenet-Performance","name":"Tenet-Performance","color":"eb6420"}],"state":"open","locked":false,"assignee":{"login":"mattwar","id":3387305,"avatar_url":"https://avatars.githubusercontent.com/u/3387305?v=3","gravatar_id":"","url":"https://api.github.com/users/mattwar","html_url":"https://github.com/mattwar","followers_url":"https://api.github.com/users/mattwar/followers","following_url":"https://api.github.com/users/mattwar/following{/other_user}","gists_url":"https://api.github.com/users/mattwar/gists{/gist_id}","starred_url":"https://api.github.com/users/mattwar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattwar/subscriptions","organizations_url":"https://api.github.com/users/mattwar/orgs","repos_url":"https://api.github.com/users/mattwar/repos","events_url":"https://api.github.com/users/mattwar/events{/privacy}","received_events_url":"https://api.github.com/users/mattwar/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/dotnet/roslyn/milestones/4","html_url":"https://github.com/dotnet/roslyn/milestones/1.2","labels_url":"https://api.github.com/repos/dotnet/roslyn/milestones/4/labels","id":937402,"number":4,"title":"1.2","description":"This is our 1.2 Milestone.\r\n\r\n<!---\r\n@huboard:{\"order\":2.0}\r\n-->\r\n","creator":{"login":"jaredpar","id":146967,"avatar_url":"https://avatars.githubusercontent.com/u/146967?v=3","gravatar_id":"","url":"https://api.github.com/users/jaredpar","html_url":"https://github.com/jaredpar","followers_url":"https://api.github.com/users/jaredpar/followers","following_url":"https://api.github.com/users/jaredpar/following{/other_user}","gists_url":"https://api.github.com/users/jaredpar/gists{/gist_id}","starred_url":"https://api.github.com/users/jaredpar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaredpar/subscriptions","organizations_url":"https://api.github.com/users/jaredpar/orgs","repos_url":"https://api.github.com/users/jaredpar/repos","events_url":"https://api.github.com/users/jaredpar/events{/privacy}","received_events_url":"https://api.github.com/users/jaredpar/received_events","type":"User","site_admin":false},"open_issues":529,"closed_issues":392,"state":"open","created_at":"2015-01-15T20:48:55Z","updated_at":"2016-01-26T01:15:13Z","due_on":null,"closed_at":null},"comments":7,"created_at":"2015-10-23T21:17:29Z","updated_at":"2016-01-26T02:15:39Z","closed_at":null,"body":"currently, we have this issue where a compilation will hold on to all its p2p reference compilations in memory transitively.\r\n\r\nthis seems causing some of our OOM issue since one compilation held by background compiler happen to have a lot of p2p references transitively. worse case, whole solution's compilations left alive in memory.\r\n\r\nwith new API from compiler (#6274), Workspace should be able to create p2p reference (CompilationReference) that doesnt hold onto compilation strongly.\r\n\r\nthis should let us release all compilations that are not actively used by IDE."},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/174777818","html_url":"https://github.com/dotnet/roslyn/issues/6276#issuecomment-174777818","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/6276","id":174777818,"user":{"login":"CyrusNajmabadi","id":4564579,"avatar_url":"https://avatars.githubusercontent.com/u/4564579?v=3","gravatar_id":"","url":"https://api.github.com/users/CyrusNajmabadi","html_url":"https://github.com/CyrusNajmabadi","followers_url":"https://api.github.com/users/CyrusNajmabadi/followers","following_url":"https://api.github.com/users/CyrusNajmabadi/following{/other_user}","gists_url":"https://api.github.com/users/CyrusNajmabadi/gists{/gist_id}","starred_url":"https://api.github.com/users/CyrusNajmabadi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CyrusNajmabadi/subscriptions","organizations_url":"https://api.github.com/users/CyrusNajmabadi/orgs","repos_url":"https://api.github.com/users/CyrusNajmabadi/repos","events_url":"https://api.github.com/users/CyrusNajmabadi/events{/privacy}","received_events_url":"https://api.github.com/users/CyrusNajmabadi/received_events","type":"User","site_admin":false},"created_at":"2016-01-26T02:15:39Z","updated_at":"2016-01-26T02:15:39Z","body":"> , it would be nice if we can unload as much as unnecessary compilations (and dll references) from memory\r\n\r\nThis sounds nice.  However, i'm concerned about two things.  \r\n1. that this may trade off memory for churn.  So we release the compilation.  Then the compiler needs it immediately, and it gets regenerated expensively.\r\n2. This won't be effective.   Even if we weakly hold onto compilations, the compilations will still stay around because of symbols that are help by the project's compilation.  i.e. if we have P1 which references P2, and we have a symbol in P1 which then references a symbol from P2, then P2's compilation is going to stay alive as long as P1's compilation is alive."}}