TA的博客

143

1、如何判断对象可以被回收1.1引用计数法       给对象添加一个引用计数器,每当有一个地方引用该对象的时候此计数器+1;当一个引用失效后计数器-1,当计数器的值减为0了的对象就不在可能被使用了。优点:实现简单,判定效率高。缺点:当对象之间的相互循环引用时,会导致GC失效,从而造成内存泄漏。1.2可达性分析算法       以一系列“GCRoots”为起点,从这些对象开始向下搜索,当一个...

1、堆(Heap)概述       Java堆(JavaHeap)是JVM所管理的最大的一块内存空间。Java堆是被所有线程共享的一块内存区域,在JVM启动的时候创建。堆的唯一目的就是存放对象实例的,Java中几乎所有的对象实例和数组都在对上分配内存。Java堆的容量可以是固定大小的,也可以随着程序执行的需求动态扩展,并在不需要过多空间时自动收缩。Java堆所使用的内存亦不需要保证是连续的。...

一、对象的创建过程(1)判断类是否加载。检查常量池中是否可以定位到指定类的符号引用,并且检查这个符号引用所代表的类时候已经被加载、链接和初始化过。如果可以定位到符号引用,并且已经被加载过:进入第2步如果没法定位到符号引用或没有被加载过:执行相应的类加载过程。(2)分配内存。(指针碰撞:Serial、ParNew/空闲列表:CMS)。(3)初始化零值。为对象中的实例字段赋零值(不是给静态属性赋...

       首先我们来看一道关于字符串的面试题,请大家先不要直接上机运行,自己先在脑子里运行一下这段程序,如果你可以很清晰的得到所有输出,那么恭喜你!这篇文章你就不要在浪费时间再看了;如果你在某一步还有不清楚的,那么这篇文章将会一网打尽所有你对String常量池的疑虑。运行结果:1、StringTable概述       StringTable又可以称为StringPool,字符串常量池,...

1、方法区概述       方法区(MethodArea)和Java堆内存一样是线程共享的一块内存区域,它被主要用来存储已经被虚拟机加载的类信息(字段、方法、构造器的字节码)、常量、静态变量、JIT编译后的代码等等(说的再简单直白点就是用来存储每个已经记载的类的结构信息)。       然而方法区只是JVM规范中定义的一个概念,在具体的虚拟机产品中对于方法区有不同的实现,以Java目前商用最...

1、什么是负载均衡高可用?nginx作为负载均衡服务器,所有请求都到了nginx,可见nginx处于非常重要的位置,如果nginx服务器宕机将会导致后端web服务将无法提供,后果严重。为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(HighAvailablitity)监控程序,通过传送诸如“Iamalive”这样的信息来监控对方的运行状况,当备份机不能再一定...

1、虚拟机桟概述由于跨平台性的设计,JVM的指令架构是基于桟的结构来设计的,这么做的优点:一是具有了跨平台性,其次使得指令集更小,编译器更容易实现,但缺点也很明显:实现同样的功能需要更多的指令和性能下降。栈是运行时的单位,堆是存储的单位栈解决的程序运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储问题,即就是数据如何放、放哪儿在java中一个线程就会相应有一个线程栈与之对应,因...

1、动静分离概念重温Nginx动静分离可以简单的理解为把动态跟静态分离开来,不能理解成只是单纯的把动态页面和静态页面物理上的分离。严格意义上来说应该是把动态请求和静态请求分离,即nginx处理静态页面,tomcat等应用服务器处理动态页面。动静分离从目前的实现角度来讲大致分为两类:一种是纯粹把静态文件放在一个独立的服务器上,有一个独立的域名,也是目前主流推崇的方案;另一种是动态文件和静态文件...

1、JVM内存模型概述Java虚拟机(JVM)在Java程序运行的过程中,会将它所管理的内存划分为若干个不同的数据区域,这些区域有的随着JVM的启动而创建,有的随着用户线程的启动和结束而建立和销毁。一个基本的JVM运行时内存模型如下所示:图1JVM运行时数据区上图是展示JDK8及以后的虚拟机规范对JVM运行时内存的划分。在JVM的运行时数据区中Java虚拟机桟、本地方法桟和程序计数器是每个线...

1、Nginx负载均衡配置预期实现效果:在浏览器地址栏中输入:http://www.123.com,nginx收到请求后把请求平均分匹配到Linux服务器上监听8080和8081端口的两个tomcat服务器上。1.1准备工作(1)首先在host文件中配置域名映射:192.168.92.128www.123.com(2)准备两个tomcat服务器,分别监听8080和8081端口,并在各自目录下...

1、JVM内存结构概述JVM是Java技术的核心,因为任何Java程序最终都需要运行在JVM上。构成JVM的主要三分部分有:类加载子系统、运行时数据区和执行引擎。他们各自发挥着各自的本领,构建起强大的JVM。JVM的具体组成如下图所示:图1JVM整体结构示意(详)图看完这个图,我想大家对于JVM应该会有一个基本的认识,最起码知道了JVM最重要的三大组成部分的位置以及他们内部的大致结构,并且这...

1、JDK,JRE,JVM之间的关系仅从传统意义上来看,Sun定义的Java技术体系包括:Java程序设计语言、各种平台上的JVM、Class文件格式、JavaAPI类库、来自商业机构和开源社区的第三方Java类库。-JDK全程为JavaSEDevelopmentKit(Java开发工具),是用于支持Java程序开发的最小环境,提供了编译和运行Java程序所需的各种资源和工具,包括:Java...

1、配置示例1::要求:在浏览器地址栏中输入www.123.com,跳转到Linux服务器中的tomcat主页面声明:本次实验在我电脑的Linux虚拟机上进行的,Linux系统信息如下:图1实验系统信息1.1准备工作(1)安装nginx(参考:Nginx快速入门—基本概念以及在Linux上安装Nginx(2)启动一个tomcat(注意:在启动之前一定要配置好Java环境变量,参考:记一次在云...

Nginx配置文件结构在nginx的安装目录下的conf目录下有一个nginx.conf,这个就是nginx默认的配置文件,默认的内容如下:Nginx配置文件结构:1、main:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成workerprocess数等。可配置的参数如下:(1)user:来指定NginxW...

1、什么是Nginx?百度百科:Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。我的理解:Nginx(enginex)是一个高性能的HTTP反向代理服务器,特点是占...