Я попытался:Как отсортировать строки в OQL
select sort(obj.displayName, 'lhs < rhs') from my.org.BusinessClass obj
и
select sort(obj.displayName, 'lhs.toString() < rhs.toString()') from my.org.BusinessClass obj
Оба дают мне результаты массив символов, но ни один из них не сортируются по строке. Я думаю, что это сортировка по id объекта.
Я также попытался:
select sort(obj.displayName, lhs < rhs) from my.org.BusinessClass obj
select sort(obj.displayName, lhs.toString() < rhs.toString()) from my.org.BusinessClass obj
Но это приводит к ошибкам, так как своего рода второй аргумент предположим строковое выражение.
Примеры на документации VisualVM только для чисел: Analyzing a Heap Dump Using Object Query Language (OQL)
Класс структурирована следующим образом:
package my.org;
public class BusinessClass {
private String displayName;
// rest of class omitted for brevity
}
Я попробовал 'выбрать сорт (obj.displayName,«LHS .toString(). localeCompare (rhs.toString()) ') из my.org.BusinessClass obj', но по-прежнему кажется, что сортировка по идентификатору объекта вместо содержимого строки. Видно ли это, что heap.objects ('java.lang.String')? – joseph
Да, вы должны использовать heap.objects(). Я обновил свой ответ выше, чтобы точно соответствовать вашему делу. –