Issue 1:
Version

2.6.10

Reproduction link

https://github.com/gr8den/vue-select-memory-leak/blob/master/vue-select-memory-leak.html

Steps to reproduce

Open vue-select-memory-leak.html from repo (I use Google Chrome 74.0.3729.157)

Open Chrome DevTools on this page

Go to page Performance, enable Memory checkbox

Start Record, click Collect garbage

Click Toggle button multiple times (I clicking 50 seconds, multiple times in second)

Click Collect garbage, click Stop record

See nodes leak on Memory chart - count of nodes not decreased after Collecting garbage (in my case nodes increased from 50 to ~2500)

What is expected?

No memory leak - Count of nodes must be decrease after force collect garbage

What is actually happening?

Have memory leak (DOM)

I try replace "select" element to "input" element and after it DOM nodes cleaned right (no leak). Also I try add 10000 options to select, browser still not clean nodes, but use a lot of RAM

Issue 2:
Version

2.6.14

Reproduction link

http://CannotProvide-SeeNotes.cant

Steps to reproduce

Set up a new component.

Create the template, include at least one element that has the class attribute as well as a v-bind for class.

The bound classes should come from a locally declared variable, that variable must be set during created() (In this instance the classes come from an API).

Use the newly created component twice on the page. In this instance its a wrapper component for child components. all matching components of the same name will have the classes duplicated as many times as they exist on the page.

Expected results, class="" should contain the initial class(es) and the bound ones.

Actual results, class="" contains the initial class(es) and the bound class(es) duplicated.

My component (there is wider logic in use but the important bit is to bind classes and reuse the component multiple times):

<template>
<div class="row m-0" :class="classes">
<component v-bind:props="pageComponent.props" :componentData="pageComponent" :components="pageComponent.components" :class="pageComponent.classes" :is="pageComponent.name" :fixedWidth="pageComponent.fixedWidth" v-for="(pageComponent, index) in pageComponents" :key="index"></component>
</div>
</template>
<script>

function initialState (){
return {
pageComponents: '',
classes: '',
}
}

export default {
name: 'RowWrapper',
props : [
'props',
'components',
'componentData'
],
data: function () {
return initialState();
},
watch: {
$route (to, from){
this.resetWindow();
},
components (to, from){
this.pageComponents = to;
}
},
methods: {
getComponents() {
this.pageComponents = this.components;
},
resetWindow: function (){
Object.assign(this.$data, initialState());
},
},
created(){
this.getComponents();
if(this.componentData){
this.classes = this.componentData.classes;
}
}
};
</script>
<style lang="scss">
</style>

What is expected?

Bound classes to be merged with class attribute correctly for each component. Instead they are duplicated for as many instances of the same component that exist on the page.

should be:

class="row m-0 col-md-6 col-sm-12"

What is actually happening?

class is in fact set to the following when 2 of the same components exist.

class="row m-0 col-md-6 col-sm-12 col-md-6 col-sm-12"

None of the code testing areas seem to allow me to declare multiple components for testing, so none provided.

I have seen a few of these posted where classes are appended, however I believe that in this instance this is a real world situation where VueJS is acting incorrectly.