- 博客(12)
- 资源 (6)
- 收藏
- 关注
原创 JVM如何处理对象分配、布局和访问?
对象分配JVM遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。在类加载检查通过后,虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。内存空间划分的方法指针碰撞假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点
2021-03-13 18:21:23
152
转载 JVM 通过「逃逸分析」就能让对象在「栈上分配」?
经常会有面试官会问一个问题:**Java 中的对象都是在"堆"中创建吗?**然后跟求职者大谈特谈「逃逸分析」,说通过「逃逸分析」,JVM 会将实例对象分配在「栈」上。其实这种说法,是并不是很严谨,最起码目前在 HotSpot 中,并没有在栈中存储对象的实现代码!
2021-03-13 17:01:37
289
原创 Java基础知识系列—Java反射
能够分析类能力的程序称为反射(reflective)。反射机制的功能非常强大,主要提供了如下功能:对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;Class类在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。然而,可以通过专门的Java类
2018-05-04 10:16:59
207
原创 Java并发系列——并发编程基础
Java并发系列——并发编程基础线程简介线程定义现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,操作系统就会创建一个Java进程。线程是现代操作系统调度的最小单元,也叫轻量级进程,在一个进程里可以创建多个线程,这些线程都拥有各自的计算器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。...
2018-03-14 13:51:31
15888
3
原创 Java基础知识系列—JDK SPI源码详解
JDK SPI源码详解认识JDK SPISPI是Service Provider Interface的缩写,可以使用它扩展框架和更换的组件。JDK提供了java.util.ServiceLoader工具类,在使用某个服务接口时,它可以帮助我们查找该服务接口的实现类,加载和初始化,前提条件是基于它的约定。大多数开发人员可能不熟悉,却经常使用它。举个例子,获取MySQL数据库连接,代码...
2018-03-13 21:44:16
388
原创 Java基础知识系列—List对象排序
Java基础知识系列—List对象排序Collectins工具类如下提供排序方法:public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null);}public static <T> void sort(...
2018-03-13 20:05:54
185
原创 Java基础知识系列—字符串
Java基础知识系列—字符串 可以证明,字符串操作是计算机程序设计中最常见的行为。不可变StringString对象是不可变的。查看JDK文档你就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则丝毫未变。public class Immutable { ...
2018-03-13 20:04:06
224
原创 Spring MVC学习笔记(一)———从注册开始
1、配置Web.xml文件,将请求交给SpringMVC处理<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j
2014-09-03 00:09:43
435
转载 中文乱码问题解决方法
1.将字符串转码:newString(“xxxxx”.getBytes("iso-8859-1"),"utf-8") 这种转码方式有很大的弊端,因为它是使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中,然后通过使用指定的字符编码将生成的byte 数组解码,构造一个新的String字符串。这种情况就有可能遇到的情况是,不能将一个汉字全部解码完。这样
2013-11-30 12:04:21
1935
原创 简单的死锁例子
死锁:在两个线程对同步对象具有依赖,就会出现死锁。package org.test.code;public class DeadLock { public static void main(String[] args) { final Object resource1 = "resource1"; final Object resour
2013-10-13 16:24:54
777
xmlSpy2011
2013-08-15
Oracle.11g数据库编程入门与实战
2013-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人