关于Java的GC垃圾回收过程中,一些概念和过程的整理和理解。 1.1 堆 堆(Heap)是Java虚拟机中内存最大的一块区域,被所有线程共享,主要存放对象实例。 1.2 栈 栈(Stack)是线程私有的,生命周期与线程相同。每个方法在执行时都会创建一个栈帧用于存储局部变量表,操作数帧,方法出口信息 ...
分类:
其他好文 时间:
2019-01-05 18:12:32
阅读次数:
195
前言 相信很多人都看过下面这张图,(来自《深入理解Java虚拟机:JVM高级特性与最佳实践》) 在学完几种垃圾收集器类型及组合后,打算看看实际中程序用到的垃圾收集器。 但是在jconsole中看到的,如下: 两边的名称并不完全匹配,给我造成了很多困惑之处。 实际上,jconsole里面用到的,我想应 ...
分类:
其他好文 时间:
2019-01-05 15:14:01
阅读次数:
190
Java虚拟机,JVM(Java Virtual Mechine),Java运行环境。每个操作系统有各自的JVM。JVM起到翻译的作用。你的Java程序可以在不同操作系统中运行,是因为有JVM,各种操作系统有各自的JVM,通过各自的JVM(运行环境)就可以在不同的操作系统运行 JRE(Java Ru ...
分类:
编程语言 时间:
2019-01-05 13:27:49
阅读次数:
202
JDK安装完成后,将一下代码写入文件HelloWorld.java中 注:.java文件名与class名字必须一致 编译: $ javac <file name>.java $ javac HelloWorld.java 编译器将源文件.java翻译成Java虚拟机可识别的<class name>. ...
分类:
编程语言 时间:
2019-01-04 14:30:33
阅读次数:
137
概述 jps 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。 通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。 如果在 linux 中想查看 java 的进程,一般我们都需要 ps -ef | grep jav ...
分类:
其他好文 时间:
2019-01-03 20:10:04
阅读次数:
199
确定连接的数据库类型《mysql,oracle,db2,moangdb,sqlservlet》 下载数据库的驱动(http://mvnrepository.org),并把jar包添加到项目中 把数据库连接的驱动类加载到java虚拟机中 通过DriverManager类中getConnection方法 ...
分类:
数据库 时间:
2019-01-03 19:22:53
阅读次数:
293
按照Java虚拟机规范的规定, JVM自动管理的内存将包括以下几个运行时的数据区域: 下面分别对几个数据区域进行说明: 1.程序计数器 程序计数器是JVM中一块较小的内存区域, 保存着当前线程执行的虚拟机字节码指令的内存地址. Java多线程的实现, 其实是通过线程间的轮流切换并分配处理器执行时间的 ...
分类:
其他好文 时间:
2019-01-03 14:07:45
阅读次数:
176
简述java虚拟机的工作原理 java虚拟机包含类加载器、字节码校验器和JIT实时编辑器。类加载器用来取得从网络获取的或存于本地机器上的类文件字节码。下一步由字节码校验器检查这些类文件是否有正确的格式,以确认在运行时不会有破坏内存的行为。Java解释器将字节码解释翻译成机器码,而JIT编译器也可将字 ...
分类:
编程语言 时间:
2019-01-02 19:32:11
阅读次数:
191
一、对象存活标记 1. 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1;当引用失效时,计数器就减1;任何时刻计数器都为0的对象就是不可能再被使用的。 引用计数算法(Reference Counting)的实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法,也 ...
分类:
编程语言 时间:
2019-01-02 01:21:28
阅读次数:
229
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE7版)》的规定,Java虚拟机所管理的内存将 ...
分类:
编程语言 时间:
2018-12-31 23:41:42
阅读次数:
249