Java的垃圾回收机制是通过GC线程执行的,它是java虚拟机自己使用的守护线程。 Java把内存分成两种,一种叫做栈内存,一种叫做堆内存,有着不同的作用。栈内存用来存储局部变量和方法调用。栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属线程中可见,即栈内存可以理解成线程的私 ...
分类:
编程语言 时间:
2016-06-13 15:35:05
阅读次数:
234
首先说一下进程和线程的区别 进程:是计算机运用程序实例,拥有独立的内存空间和数据(猜测内存堆应该是作用的进程上),一个进程包含多个子线程,不同进程相互独立; 线程:cpu执行的基本单位,拥有独立的寄存器和栈,同一进程下的线程共享地址&内存空间;线程栈存放方法的栈帧,每次方法执行都会新建栈帧压到栈顶, ...
分类:
编程语言 时间:
2016-06-10 23:12:16
阅读次数:
191
点击进入_更多_Java千百问1、Java堆什么情况会溢出所有对象的实例都在Java堆上分配内存,堆大小由-Xmx和-Xms来调节,如果程序使用的内存超过了堆最大内存(-Xmx),则会溢出Java heap space。了解java内存模型看这里:java内存模型是什么样的
了解堆内存看这里:java堆内存是什么样的
了解java垃圾回收机制看这里:java垃圾回收机制是什么实例:public...
分类:
编程语言 时间:
2016-05-29 11:00:33
阅读次数:
234
一、概述 Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。 二、热身 先看一个比较简单的Block例子: 在这个例子中,myBlock是一个Block变量, ...
分类:
移动开发 时间:
2016-05-24 12:11:45
阅读次数:
298
成员变量 和 局部变量 位置 类中方法外 方法中或方法声明上内存 堆 栈初始值 有初始值 没有,使用前需要初始化生命周期 随着对象的存在而存在.随着对象的消失而消失 随着方法的加载而加载.随着方法的结束而消失. ...
分类:
其他好文 时间:
2016-04-24 15:36:30
阅读次数:
145
一、内存溢出类型
1、java.lang.OutOfMemoryError: PermGen space
JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也...
分类:
编程语言 时间:
2016-04-22 19:02:35
阅读次数:
214
0.和java很相似, struct(结构) 实例化出来的对象,是在内存栈中分配; class(类)实例化出来的对象,指向了内存堆中分配的空间; string、object、class,这3个引用类型在堆中存储 1.在堆内存中,一个new分配一个内存区域,没有new的通常都只是直接指向; 但在栈内存 ...
Java把内存划分成两种:一种是栈内存,一种是堆内存。 堆栈的概念逻辑上的,在完全符合Java规范的Java处理器面世之前,所有Java虚拟机提供的内容都是由软件模拟出来的。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这 ...
分类:
编程语言 时间:
2016-04-16 10:49:52
阅读次数:
149
栈内存 栈内存中储存基本类型的变量(int a =3;)和引用类型的变量(Car car).当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 堆内存 堆内存中存放由new创建的对象 ...
分类:
编程语言 时间:
2016-04-12 23:58:29
阅读次数:
197
JVM垃圾回收与性能调优总结 JVM调优的几种策略 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,P ...
分类:
其他好文 时间:
2016-04-04 19:38:11
阅读次数:
263