JavaString在虚拟机中的实现

1.String在虚拟机中的实现

特点:

① 不变性,是在多线程的访问中,保持对象的不变性的话就不需要实现同步,省略了同步和锁的等待时间。提高了多线程的访问性能,堆所有想成都是只读的。它的修改操作都是创建新的对象来实现的。

② 针对常量池的优化,是指两个String对象拥有相同的值时,他们只引用常量池中的同一个拷贝。当同一个字符串反复出现时,这个技术可以大幅度节省内存空间。

③ 类的final定义,final类型的对象在系统中不可能有任何子类,这对系统的安全性保护,

String的内存泄漏:

String的内存泄漏在JDK1.7之前,其中的一个SubString()函数在截取字符串时,是直接调整偏离值off和长度count,通过直接对原来Value的引用实现新的字符串。但是当垃圾回收器对原有数据进行回收后,除了被引用的字符外其他字符依然占用内存而没有被清理,造成了内存泄漏。解决办法是通过在JDK1.7中对字符串中的长度进行value的实际length进行计算,并且在SUB新的字符串时,直接创建一个新的字符串而不是使用引用。

String常量池的位置变化:

JDK1.6中还是在永久区,在JDK1.7中就在堆空间中了。

时间: 2024-10-06 22:08:25

JavaString在虚拟机中的实现的相关文章

XShell 连接虚拟机中的服务器 失败 、连接中断(Connection closed by foreign host.)

在使用XShell连接虚拟机中的服务器时,报以下错误并断开连接,之前连接还是挺稳定的,忽然就这样了 Last login: Thu Aug 10 21:28:38 2017 from 192.168.1.102 [[email protected] ~]# Socket error Event: 32 Error: 10053. Connection closing...Socket close. Connection closed by foreign host. Disconnected f

虚拟机中的Linux不能上网

如果你已经确定你的宿主机Windows上的虚拟网卡已经打开了,即打开网络和共享中心---更改适配器设置中的 VMware 1 和VMware 8均处于启用状态.此时如果Linux的网络管理图标有个红色的叉号,分别执行ifconfig和/etc/init.d/network restart后出现如图所示结果,或者是提示没有插网线. 出现这种情况,最有可能的原因是宿主机(Windows)上的与虚拟机相关的服务没有开启的原因.在任务栏右击打开任务管理器--服务--服务(右下角的)找到VM开头的所有服务

轻易解决VMware 虚拟机中被提示“请不要在虚拟机中运行此程序“

决 VMware 虚拟机 中被提示 "请不要在虚拟机中运行此程序"或者"Themida Sorry, this application cannot run under a Virtual Machine"方法 自己发现问题,解决问题后,觉得应该分享给大家.用记事本打开 VMX 文件 类似 Windows XP Professional.vmx ,在文本末尾加入一行 monitor_control.restrict_backdoor = TRUE 保存文件 现在启动

虚拟机中安装操作系统视频教程

本篇主要讲解在虚拟机中安装操作系统的练习教程.属于视频教程 视频教程的重点是要边看边学边做,希望能对大家有点帮助.有待改进的地方请留言给我,谢谢 视频下载地址:http://pan.baidu.com/s/1sj0Tkux 提取码:yuka

SecureCRT连接虚拟机中的Linux

如何使用SecureCRT连接虚拟机中的Linux https://jingyan.baidu.com/article/574c52191eb9996c8c9dc16a.html?st=5&net_type=&bd_page_type=1&os=1&rst=&word=www.5pk.com 初学Linux,虚拟机用NAT方式连网,也实现了虚拟机能上网,也能ping得通主机,但是要实现secureCRT连接虚拟机时,却连不上,在网上了些解决方案,将其记录在此. [[

1.如何在虚拟机中部署一个NanoServer

2017年5月20日????12:00 1.制作虚拟机的VHD 1.启动Nano Server Image Builder 屏幕剪辑的捕获时间: 2017/5/20 12:06 屏幕剪辑的捕获时间: 2017/5/20 12:10 以上是一些预先介绍的信息 2.选择Windows Server 2016的安装源文件 屏幕剪辑的捕获时间: 2017/5/20 12:09 屏幕剪辑的捕获时间: 2017/5/20 12:10 同意许可协议 3.确定部署类型 屏幕剪辑的捕获时间: 2017/5/20

Win7系统的虚拟机中安装win7系统

今天因兼职需要,在家里的win7电脑上安装WIN7虚拟机. 之前在xp和win10系统的虚拟机中,安装各种版本的windows系统都很轻松,这一次居然折腾了很久都没搞定. 下载了好几个系统ios镜像都不行,最后查找别人的经验,发现是安装时设置有问题. 完整步骤如下: Vmware Workstation 12       链接:http://pan.baidu.com/s/1o850FhS 密码:6dpr Windows 7 X86/X64系统      网上下载ISO版系统 1. 打开Vmwa

虚拟机中MySQL连接问题:Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql

环境:在VirtualBox中安装了Ubuntu虚拟机,网络使用了NAT模式,开启了端口转发. 局域网内其他计算机访问虚拟机中的MySQL Server出现两个问题: Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql 1.解决Lost connection to MySQL server

在 Linux 虚拟机中手动安装或升级 VMware Tools

对于 Linux 虚拟机,您可以使用命令行工具手动安装或升级 VMware Tools. 本次Linux 虚拟机为CentOS6.5 先决条件开启虚拟机.确认客户机操作系统正在运行.由于 VMware Tools 安装程序是使用 Perl 编写的,因此,请确认在客户机操作系统中安装了 Perl. 安装VMware Tools的目的 VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions