`

jdk 1.6 中 "".getBytes() 得到系统默认编码性能瓶颈

    博客分类:
  • java
阅读更多
"".getBytes() 源码中  用来得到系统默认编码时,
....
  public byte[] getBytes() {
return StringCoding.encode(value, offset, count);
    }
.......
static byte[] encode(char[] ca, int off, int len) {
String csn = Charset.defaultCharset().name();
try {
   return encode(csn, ca, off, len);
} catch (UnsupportedEncodingException x) {
   warnUnsupportedCharset(csn);
}
..........
public static Charset defaultCharset() {
        if (defaultCharset == null) {
   synchronized (Charset.class) {
java.security.PrivilegedAction pa =
   new GetPropertyAction("file.encoding");
String csn = (String)AccessController.doPrivileged(pa);
Charset cs = lookup(csn);
........
得到系统默认编码的缓存用的是 synchronized 当系统多线程并发掉用时,会影响其它线程的运行,应该用这样的方式来代替
"".getBytes(StringUtil.getDefaultEncod())
package com.lin.test;

import java.nio.charset.Charset;
import java.util.concurrent.ConcurrentHashMap;

public class StringUtil {
private static ConcurrentHashMap<String, Charset> charsetHashMap=new ConcurrentHashMap<String, Charset>();
private static String systemDefaultCharsetEncode=System.getProperty("file.encoding");
private static Charset getCharset(String en)
{
if(charsetHashMap.get(en)==null)
{
charsetHashMap.put(en, Charset.forName(en));
}
return charsetHashMap.get(en);
}
public static Charset getDefaultEncod()
{
return getCharset(systemDefaultCharsetEncode);
}
}
分享到:
评论

相关推荐

    jdk1.6 tools.jar

    《深入理解JDK1.6中的tools.jar》 在Java开发过程中,JDK是一个不可或缺的组件,它提供了编译、运行、调试等必备工具。在JDK1.6版本中,一个重要的组成部分就是tools.jar,它是Java开发工具集的一部分,包含了Java...

    jdk1.6.tar.gz

    8. **性能优化**:JDK 1.6通过改进垃圾收集算法和JVM内部优化,提升了整体性能。 9. **国际化和本地化**:加强了对不同语言和地区的支持,使应用程序能够更好地适应全球用户。 10. **XML处理**:提供了一系列API,...

    IBMJDK1.6linux.zip

    IBM JDK 1.6是IBM公司为Java开发者提供的一个针对Linux 64位操作系统的Java开发工具包。这个版本的JDK是Java平台标准版(Java SE)的一部分,主要用于开发和运行Java应用程序、Web应用程序以及企业级应用。IBM JDK与...

    okhttp3.8.0-jdk1.6.zip

    OkHttp3.8.0-jdk1.6.zip是一个专门为Java Web项目设计的网络通信库,它针对JDK1.6进行了优化和重新编译,确保在较低版本的Java环境中也能稳定运行。OkHttp,由Square公司开发,是一款高性能的HTTP客户端库,以其高效...

    jdk 1.6 tools.jar

    jdk 1.6 lib/tools.jar,韩含com.sun.mirror包中的内容,包括apt/declaration等,在jdk1.8中的lib/tools.jar已不同

    jdk1.6安装包.exe.zip

    在标题"jdk1.6安装包.exe.zip"中,我们了解到这是一个针对Windows 64位系统的JDK 1.6安装程序的压缩文件。".exe"后缀表明这是一个可执行文件,通常用于Windows环境下的程序安装。".zip"则表示该文件是压缩格式,需要...

    okhttp3.8源码使用jdk1.6重新编译_okhttp3.8.0-jdk1.6.zip

    1.okhttp3.8源码使用jdk1.6重新编译,已集成了okio,在javaweb项目中使用,未在安卓项目中使用 2.okhttp3.8源码使用jdk1.6重新编译_okhttp3.8.0-jdk1.6.jar

    JDK 1.6 API.rar 中文

    12. **JVM内存管理**:虽然不在API文档中直接描述,但JDK 1.6对垃圾收集和内存管理进行了优化,包括分代收集和并发标记清除算法。 JDK 1.6 API文档的中文版对于中国开发者来说是一个宝贵的资源,它可以帮助我们更好...

    logback-cfca-jdk1.6-3.1.0.0.jar

    logback-cfca-jdk1.6-3.1.0.0.jar

    jdk_linux_1.6.0_24_tar版.rar

    本文将详细介绍JDK1.6 Tar.GZ版本的特点、安装过程以及在Linux系统中的应用。 首先,"tar.gz"是一种常见的文件打包和压缩格式,由"tar"工具进行文件打包,再通过"gzip"工具进行压缩。这种格式在Linux环境中尤为常见...

    jdk1.6对应的rt.jar

    rt.jar

    jdk1.6 64.zip

    标题中的"jdk1.6 64.zip"指的是64位版本的JDK 1.6,这个版本的JDK在当时是一个广泛使用的开发环境,尤其对于那些需要处理大量数据或利用大型内存的应用程序来说,64位版本能够提供更大的内存地址空间。 JDK 1.6,也...

    jdk1.6.0.24 i586

    在32位系统上,JDK 1.6.0.24可以支持最大4GB的内存分配,尽管受到地址空间限制,但对于大多数中小型应用来说已经足够。 **32位与64位的区别** 在32位操作系统上,JDK 1.6.0.24的最大优势在于其兼容性。虽然64位...

    JDK1.6.0.24-64位

    JDK 1.6.0.24 是Java Development Kit的一个特定版本,专为64位操作系统设计。这个版本的发布旨在提供给那些需要特定JDK版本以兼容其应用程序或系统的用户。在Java开发中,JDK是至关重要的工具集,包含了编译、调试...

    JDK1.6.0.45

    下载并安装JDK 1.6.0.45后,开发者可以在环境变量`JAVA_HOME`中设置其路径,确保系统能够找到JDK。此外,还需要配置`PATH`变量,使其包含`bin`目录,这样就可以在命令行中使用`javac`编译器、`java`解释器和其他相关...

    jpinyin-jdk1.6.jar

    Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体字(异体字不存在标准拼音)之外的所有汉字; 2、拼音转换速度快; 经测试,转换Unicode编码从4E00-9FA5范围的20902个汉字,...

    jdk1.6 1.7 .18 local_policy.jar和US_export_policy.jar

    因此美国对加密解密等软件进行了出口限制,JDK中默认加密的密钥长度较短,加密强度较低,而UnlimitedJCEPolicyJDK7中的文件则没有这样的限制,因此为了获得更好的加密强度,需要替换掉那两个文件。

    jdk1.6 src.zip

    《深入解析JDK1.6源码:洞察Java编程核心》 JDK1.6的源码是Java开发者的重要参考资料,它揭示了Java语言的内部工作机制,为学习和理解Java的底层实现提供了宝贵的数据。本篇文章将围绕"jdk1.6 src.zip"中的主要源码...

    tools.jar(JDK1.6中的tools.jar)

    JDK1.6中的tools.jar //呵呵,今晚JCreator出错无数,检查了好久,才发现原来是我的tools.jar不见了,痛定思痛,决定将其收藏!

    JDK1.6,Linux 64位

    jdk1.6.0_45,Linux 64位,Ubuntu 或者 CentOS 均可,亲测,解压即可用 (解压命令 tar -xf xxxxx.tar.gz), 配置环境变量 /etc/profile (非必要操作,因为 IDEA 可以直接选择 1.6 所在目录,无需添加环境变量) ...

Global site tag (gtag.js) - Google Analytics