
java虚拟机
张虎宇
这个作者很懒,什么都没留下…
展开
-
java内存区域和数据存储举例
Java和C++有一堵由内存分配和垃圾回收技术围成的墙,里面的人想出去,外面的人想进去。 Java虚拟机执行程序时会把所管理的内存分为若干不同的区域,其总称为运行时数据区域。如下: 1.程序计数器: 当前线程执行所执行的行数指示器,每个线程独有的区域。也就是记录当前线程执行的代码执行到了哪个地方。是唯一不会发生OutOfMemoryError的区域。 2.虚拟机栈(java栈)...原创 2019-01-17 11:26:01 · 433 阅读 · 0 评论 -
jvm内存溢出区域和排查方法
目录 1.堆溢出 2.栈溢出 3.方法区和运行时常量池溢出 4.本机直接内存溢出 首先我们需要掌握什么是内存溢出和内存泄漏 内存泄漏:即声明的对象无法被回收,一直存在于内存中,使得占用的内存就像被泄漏消失了一样 内存溢出:即剩余可用的内存空间过小,无法分配出下一步工作需要的内存。 内存泄漏过多必然会导致内存溢出 内存溢出(OOM)会出现在jvm内存的各个区域,程序计数器区是唯一不...原创 2019-01-17 13:50:09 · 6112 阅读 · 1 评论 -
jvm内存分配和gc策略
目录 内存分配是指哪个区域? 1.堆的区域划分 2.两种gc 3.区域之间的变化 内存分配是指哪个区域? jvm运行时内存分为程序计数器、虚拟机栈、本地方法栈、堆和方法区。其中计数器、虚拟机栈、本地方法栈几个区域随线程生和灭,栈帧在编译期就可知,每一个栈帧的分配大小基本在类结构确定下来时就已经定下来了,因此这几个区域的内存分配和回收基本是确定。jvm中内存分配和gc的重点区域就是...原创 2019-01-18 15:48:35 · 366 阅读 · 0 评论 -
java线程安全的实现方法
java线程安全被分为了几个等级类,但不管怎样总体来讲就是使线程之内和几个线程之间的事务操作具有原子性,数据具有正确性,一般来讲具有以下几种方法 目录 1.互斥同步 2.非阻塞同步 3.无同步方案 1.互斥同步 互斥同步时最常用的一种并发正确性保障手段。同步是指在多个线程中并发访问数据时,保证数据在同一时刻只被一个线程使用。互斥是实现同步的一种方式,临界区、互斥量、信号量都是实现互...原创 2019-01-21 18:01:32 · 2567 阅读 · 0 评论