1 java虚拟机对内存的管理 java虚拟机在执行java程序的时候把内存分为若干个不同的区,这些区各自有不同的用处,以及创建和销毁时间. 有的区随着虚拟机的启动而启动,有的区则依赖用户线程的启动和结束而启动和结束. 根据java虚拟机规范,java虚拟机将内存分为下面几个部分:如下图 下面是对这 ...
分类:
编程语言 时间:
2017-04-08 14:55:05
阅读次数:
183
运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。 1.程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线 ...
分类:
编程语言 时间:
2017-04-06 15:54:33
阅读次数:
228
JVM生命周期可以分为以下三个阶段 启动:任何class文件的main函数都可认为是jvm示例的起点。 运行:以main函数为起点,后续的线程都由它启动,包括守护线程和用户线程。main方法启动的线程是用户线程,守护线程是JVM自己使用的线程如GC线程。 退出&异常退出:用户线程完全退出了,jvm示 ...
分类:
其他好文 时间:
2017-03-29 01:13:35
阅读次数:
158
在java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程。下面的方法就是用来设置守护线程的。 有几点需要注意: (1) thread.setDaemon(true)必须在thread.s ...
分类:
编程语言 时间:
2017-03-27 15:50:59
阅读次数:
262
epoll的异步阻塞(AIO): 用户线程创建epoll后,其实是内核线程负责扫描 fd 列表(在网络服务器上可以是socket,socket在创建后返回的也是文件描述符),并填充事件链表。但是,并不会主动通知用户线程,没有一个回调函数调用之前注册好的函数,还是需要用户线程不停的轮询,所以epoll ...
分类:
其他好文 时间:
2017-03-04 18:27:13
阅读次数:
155
第三章 垃圾收集器和内存分配策略 对象已死吗 引用计算方法 可达性分析算法 通过一些列的GC roots 对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象到GC roots 没有任何引用链的则证明对象不可用的 虚拟机栈中的引用的对象 方法区中类静态属性引用的对象 方法去... ...
分类:
其他好文 时间:
2017-02-12 15:48:29
阅读次数:
204
1.用户线程和守护线程的区别用户线程和守护线程都是线程,区别是Java虚拟机在所有用户线程dead后,程序就会结束。而不管是否还有守护线程还在运行,若守护线程还在运行,则会马上结束。很好理解,守护线程是用来辅助用户线程的,如公司的保安和员工,各司其职,当员工都离开后,保安自然下班了。 2.用户线程和 ...
分类:
编程语言 时间:
2017-01-30 17:58:24
阅读次数:
299
Java虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,有各自的创建时间和销毁时间,有的区域随着虚拟机进程的启动而存在,有的区域则是依赖用户线程的启动和结束进行建立或销毁。Java虚拟机第二版规定,虚拟机管理的内存包含以下几个运行时数据区域 ...
分类:
编程语言 时间:
2017-01-14 20:08:23
阅读次数:
283
使用堆外内存减少Full GC - JVM
大部分主流互联网企业线上Server JVM选用了CMS收集器(如Taobao、LinkedIn、Vdian), 虽然CMS可与用户线程并发GC以降低ST...
分类:
其他好文 时间:
2017-01-13 12:02:54
阅读次数:
429
Java虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,有各自的创建时间和销毁时间,有的区域随着虚拟机进程的启动而存在,有的区域则是依赖用户线程的启动和结束进行建立或销毁。Java虚拟机第二版规定,虚拟机管理的内存包含以下几个运行时数据区域 ...
分类:
编程语言 时间:
2017-01-08 21:27:56
阅读次数:
373