Java把内存划分成两种:一种是栈内存,一种是堆内存。 一、栈内存 存放基本类型的变量,对象的引用和方法调用,遵循先入后出的原则。 栈内存在函数中定义的“一些基本类型的变量和对象的引用变量”都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用 ...
分类:
编程语言 时间:
2019-01-02 12:43:56
阅读次数:
111
在es中,text类型的字段使用一种叫做fielddata的查询时内存数据结构。当字段被排序,聚合或者通过脚本访问时这种数据结构会被创建。它是通过从磁盘读取每个段的整个反向索引来构建的,然后存存储在java的堆内存中。 fileddata默认是不开启的。Fielddata可能会消耗大量的堆空间,尤其 ...
分类:
其他好文 时间:
2018-12-30 13:57:07
阅读次数:
747
前面已经介绍两个分配内存的函数,一个全局的内存分配,一个是私有的内存分配。在进程私有的内存里分配里,又有两种分配情况,一种上基于栈式的内存分配,另一种是基于堆内存的分配。在c++里使用堆内存分配是使用HeapAlloc函数来实现的,也就是实现new操作符分配内存时会调这个函数。 函数HeapAllo ...
1、在类中的位置不同 成员变量:类中,方法外 局部变量:方法中或者方法的声明上(形式参数) 2、在内存中为位置不同 成员变量:堆内存 局部变量:栈内存 3、生命周期不同: 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 4、初始化值得问 ...
分类:
其他好文 时间:
2018-12-27 11:14:01
阅读次数:
118
1.在build.gradle添加脚本指定编译堆内存 如果在整个工程中生效,则在build.gradle中增加如下配置: 如果只在单元测试的时候生效,则在build.gradle中增加如下配置: android { .............. testOptions { android.dexOp ...
分类:
移动开发 时间:
2018-12-25 20:03:44
阅读次数:
156
java内存结构 一、垃圾回收机制 堆内存分为:新生代,老年代 默认比例: 1:2 新生代:刚出生不久的对象,存放在新生代里面,存放不是经常使用的对象 老年代:存放比较活跃的对象,存放经常被引用的对象 垃圾回收机制回收在新生代比较频繁,老年代回收的次数比较少。 二、jvm参数调优 常见参数配置 -X ...
分类:
其他好文 时间:
2018-12-23 18:02:18
阅读次数:
194
明白生产环境中的jvm参数写代码的时候,程序写完了,发到线上去运行,跑一段时间后,程序变慢了,cpu负载高了……一堆问题出来了,所以了解一下生产环境的机器上的jvm配置是有必要的。比如说:JDK版本是多少?采用何种垃圾回收器?程序启动的时候默认分配堆内存空间是多少?随着程序的运行,程序最多能使用多大的内存空间?程序中使用了多少个线程?这些线程又处于何种状态?了解了这些,会对程序的运行有一个更好的了
分类:
其他好文 时间:
2018-12-20 11:50:26
阅读次数:
217
this问题; this是JavaScript的关键字 用途:指向某一个对象 如何判断this的指向 函数内:两种情况:1.以函数形式调用(不带 . 指向window ) 2.以方法形式调用(带 . this指向 . 前面的) 函数外:this指向window 1.自调用函数内this都是windo ...
分类:
Web程序 时间:
2018-12-18 20:57:38
阅读次数:
214
一、为什么使用智能指针?智能指针的原理? C/C++中的堆内存分配和释放的方式主要是: malloc/free 以及 new/delete 等。 使用new 和delete 管理内存存在三个常见问题: 1.忘记delete(释放) 内存,或者异常导致程序过早退出,没有执行 delete。忘记释放动态 ...
分类:
编程语言 时间:
2018-12-18 18:00:23
阅读次数:
300
==: == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。 1、比较的是操作符两端的操作数是否是同一个对象。2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。3、比较的是地址,如果是具体的阿 ...
分类:
编程语言 时间:
2018-12-18 00:05:50
阅读次数:
202