JAVA虚拟机栈几个重要概念 java 虚拟机栈 = java virtual machine stacks = jvms 1、JVMS 线程私有,生命周期与线程相同 2、JVMS 描述的是JAVA方法执行的内存模型:JVMS在方法执行时会创建一个“栈帧” stack frame,用于记录局部变量表 ...
分类:
编程语言 时间:
2017-03-30 23:28:07
阅读次数:
284
java.lang.OutOfMemoryError内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。 造成此错误的原因有一下几个: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。 解决方法:数据库查询尽量 ...
分类:
其他好文 时间:
2017-03-30 19:44:58
阅读次数:
137
多线程 [html] view plain copy print? final void wait() throws InterruptedException final void notify() final void notifyAll() [html] view plain copy prin ...
分类:
编程语言 时间:
2017-03-29 19:03:44
阅读次数:
189
一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 JAVA_OPTS参数说明: -server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最 ...
分类:
其他好文 时间:
2017-03-29 14:09:04
阅读次数:
194
Java 实现一次编译到处运行的基础,来源于 Java 虚拟机屏蔽了操作系统的底层细节。使用 class 文件存储编译后的源程序,使得 Java 程序的编译与操作系统解耦。正是因为 Java class 文件的设计与 Java 语言解耦,分别发布了 Java语言规范和 Java 虚拟机规范,使得其他 ...
分类:
编程语言 时间:
2017-03-28 23:44:53
阅读次数:
253
栈内存 堆内存 基础类型,对象引用(堆内存地址) 由new创建的对象和数组, 存取速度快 相对于栈内存较慢 数据大小声明周期必须确定 分配的内存由java虚拟机自动垃圾回收器管理。动态分配内存大小 共享特性 栈中如果有字符串,则直接引用 如果没有,开辟新的空间存入值 每new一次在堆内存中生成一个新 ...
分类:
编程语言 时间:
2017-03-28 10:57:36
阅读次数:
180
javaJVM JVM是想象中的实体机器,有想象中的处理器,堆,栈,寄存器等 java虚拟机会将程序创建的对象放到堆中,栈中存放的是非static的自动变量,如函数参数,表达式的临时结果和函数返回值(如果他们没有被放到寄存器中).栈中的这些实体数据分配和释放都是由系统自动完成,,堆中存放的数据都是显 ...
分类:
编程语言 时间:
2017-03-24 13:06:30
阅读次数:
179
引用 Java 虚拟机接管了所有的内存分配与回收工作,极大地减少了程序员的工作量和错误率。GC 在回收内存时,通常采用被称为可达性分析的算法判断一个对象是否可以回收。而在可达性分析中,对象的引用有着决定性的作用。在下图中,GC 从 GC Roots 开始顺着引用链往下寻找对象,发现当前有引用的对象为 ...
分类:
编程语言 时间:
2017-03-24 00:18:57
阅读次数:
223
类加载的过程 一、加载 在加载阶段虚拟机需要完成以下三件事: 通过一个类的全限定名称来获取此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口 这三件事在Java虚拟机中 ...
分类:
其他好文 时间:
2017-03-23 01:31:05
阅读次数:
126
内存溢出和内存泄露的区别 1、内存溢出 内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了。 2、内存泄露 内存泄露指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可达但无用。内存泄露一般都是因为内存中有一块很大的对象,但是无法释放。 从定义上可以 ...
分类:
其他好文 时间:
2017-03-22 12:51:35
阅读次数:
130